Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> поиск в многомерном массиве функцией in_array 
:(
    Опции темы
supervladislav
Дата 21.5.2008, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



у меня есть многомерный массив ,структуру его см ниже ,не очень умею работать с  таким чудом ,подскажите такую вещь можно ли функией in_array
найти значение эллементов 0,1,2 [0] => Новостройка [1] => Вторичка [2] => Наличие парковки [3] => Охрана и ещё подскажите как с помощью вложенного цикла превратить значение этих двух массивов в переменные ,ну так чтоб попроще.

Array ( [1] => Array ( [0] => 1 комнатная квартира [1] => 2 комнатная квартира [2] => 3 комнатная квартира [3] => 4-х и более комнатная квартира ) [0] => Array ( [0] => Новостройка [1] => Вторичка [2] => Наличие парковки [3] => Охрана ) )
PM MAIL   Вверх
Feldmarschall
Дата 21.5.2008, 17:02 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



а откуда берется этот массив?
PM   Вверх
supervladislav
Дата 21.5.2008, 22:36 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



Цитата(Feldmarschall @ 21.5.2008,  17:02)
а откуда берется этот массив?

это данные из формы )))они подставляються из эллемента value 
PM MAIL   Вверх
Feldmarschall
Дата 21.5.2008, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



ну и нафига здесь у тебя многомерный массив?
почему нельзя было сделать разным полям нормальные имена?

и объясни задачу толком, не употребляя слов, смысла которых ты не понимаешь.
что и в чем ты собрался искать, и зачем.
PM   Вверх
supervladislav
Дата 22.5.2008, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



меня интересует как записать массив в переменную используя цикл foreach ,ну если он многомерный и если в массиве два массива)))
а нужно мне следущее в массив $ttype3  добавляются данные из value ,но дело в том ,что данные раздные их предстоит записывать в раздные ячейки таблицы ,следовательно я хотел бы сделать проверку на совместимость с этими данными если в массиве есть тото и тото значение добавляем значение в переменную ,если есть другое значение то в другую переменную,а потом добавляем всё енто в базу данных.R сожалению  добалять значения можно только в один массив !!!  
PM MAIL   Вверх
IZ@TOP
Дата 22.5.2008, 11:34 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73





--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Fortop
Дата 22.5.2008, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



supervladislav, ты рассказываешь какие-то ужасы на ночь.

Можешь детальнее описать что тебе нужно сделать по факту? Не значения в массиве проверить, а конкретную задачу.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
supervladislav
Дата 23.5.2008, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



у меня есть  код который формирует запрос в sql базу ,в массив ttype3 добавляются данные из элемента value ,ниже приведён код как массив превращается в строку с sql  кодом а потом добовляется в sql запрос ,но дело в том ,что мной были ввведена новая форма данные из которой добовляются 
тоже в массив ttype3(к сожалению поменять название массива для этой формы я немогу) мне нужно чтоб данные из первой и второй формы разделялись ,а потом к ним прибовлялись sql операторы и они добовлялись в sql запрос.Проблема в том ,что я несовсем понимаю как устроены многомерные массивы ,ну в плане цикла foreach ,если вам несложно подскажите как  это делается  smile 



Код

$kol=count($ttype3,1);
if(count($ttype3)>2){

if($kol!=3){
$kol=$kol-1;
if ($allttype3) {
    $t_ttype3="";
} elseif ($allttype2) {
    $t_ttype3=""; 
} elseif(is_array($ttype3)) {
$t_ttype3.=" AND ( ";
     foreach($ttype3 as $value3) {
        foreach ($value3 as $somevalue) {
        $cg++;
       if($cg==1 and $kol==1){
        $t_ttype3.=" ttype3='$somevalue'";}
        if($kol>1 and $cg!=$kol){$t_ttype3.=" ttype3='$somevalue' OR";
        
        }
        elseif($cg==$kol and $kol!=1){$t_ttype3.=" ttype3='$somevalue'";}    
        }}    $t_ttype3.=")";}}}
        

PM MAIL   Вверх
Feldmarschall
Дата 23.5.2008, 12:19 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Очередной борец с трудностями, которые сам высасывает себе из пальца.

Многомерные массивы в пхп устроены ОЧЕНЬ просто.
Это массивы, элементами которых являются другие массивы. проще этой структуры не может быть ничего.

PM   Вверх
Fortop
Дата 23.5.2008, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(supervladislav @  23.5.2008,  11:37 Найти цитируемый пост)
но дело в том ,что мной были ввведена новая форма данные из которой добовляются 
тоже в массив ttype3(к сожалению поменять название массива для этой формы я немогу) мне нужно чтоб данные из первой и второй формы разделялись 

Извини, но в такой конфигурации я пас.

Если ты сам ввел форму, то ты сам можешь и должен был разделить данные, еще на этапе проектирования форм.

А теперь разбираться, как заставить это все работать... увольте.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
supervladislav
Дата 23.5.2008, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



я от вас много не прошу я прошу  лишь сказать какая функция в пхп работает с многомерными массивами и осущевствляест поиск по ним ,всмысле по всем массивам и как с помощью цикла получить значения второго эллемента многомерного массива.
PM MAIL   Вверх
supervladislav
Дата 23.5.2008, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



Цитата(Feldmarschall @ 23.5.2008,  12:19)
Очередной борец с трудностями, которые сам высасывает себе из пальца.

Многомерные массивы в пхп устроены ОЧЕНЬ просто.
Это массивы, элементами которых являются другие массивы. проще этой структуры не может быть ничего.

а объясни пожалуйста как через цикл foreach получить значения первого эллемента многомерного массива и второго?
PM MAIL   Вверх
bars80080
Дата 23.5.2008, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(supervladislav @  23.5.2008,  12:45 Найти цитируемый пост)
как с помощью цикла получить значения второго эллемента многомерного массива

а зачем цикл?
Код

$a = massive[0][1]; // второй элемент первого вложенного массива

PM MAIL WWW   Вверх
Fortop
Дата 23.5.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(supervladislav @  23.5.2008,  12:45 Найти цитируемый пост)
 я прошу  лишь сказать какая функция в пхп работает с многомерными массивами и осущевствляест поиск по ним ,всмысле по всем массивам и как с помощью цикла получить значения второго эллемента многомерного массива. 

Такой функции нет

используй
Код

array_walk($array, 'seekfunction', 'seekvalue');



--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
supervladislav
Дата 23.5.2008, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



Цитата(bars80080 @ 23.5.2008,  13:15)
Цитата(supervladislav @  23.5.2008,  12:45 Найти цитируемый пост)
как с помощью цикла получить значения второго эллемента многомерного массива

а зачем цикл?
Код

$a = massive[0][1]; // второй элемент первого вложенного массива

а месте с циклом как это будет выглядеть ,но только так чтоб получить и первый эллемент и второй в раздные переменные 
PM MAIL   Вверх
bars80080
Дата 23.5.2008, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



честно говоря, я мало понимаю о чём речь, почему не использовать в качестве переменных массив, коли он есть. почему вообще возник такой массив

разные переменные? пожалуйста:
Код

for($i = 0; isset($mv[$i]); $i++) {
for($j = 0; isset($mv[$i][$j]); $j++) {
$a = 'param'.$i.'_'.$j;
$$a = $mv[$i][$j];
}
}

для массива $mv с порядковыми элементами
переменные вида: $param0_0; $param0_1; ... $param3_2; ...
PM MAIL WWW   Вверх
Fortop
Дата 23.5.2008, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(supervladislav @  23.5.2008,  16:59 Найти цитируемый пост)
 месте с циклом как это будет выглядеть ,но только так чтоб получить и первый эллемент и второй в раздные переменные  

никак не будет выглядеть - вообще.

Только ручками для каждой отдельной переменной.

Добавлено через 38 секунд
bars80080, ты себе представляешь потом, разбираться в коде, где вот так... формируются переменные? smile


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
supervladislav
Дата 23.5.2008, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



Цитата(Fortop @ 23.5.2008,  20:23)
Цитата(supervladislav @  23.5.2008,  16:59 Найти цитируемый пост)
 месте с циклом как это будет выглядеть ,но только так чтоб получить и первый эллемент и второй в раздные переменные  

никак не будет выглядеть - вообще.

Только ручками для каждой отдельной переменной.

Добавлено @ 20:23
bars80080, ты себе представляешь потом, разбираться в коде, где вот так... формируются переменные? smile

угости примерчиком 
PM MAIL   Вверх
Fortop
Дата 23.5.2008, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



supervladislav, 
Простой пример, к тебе пришел массив из 5ти элементов.
Ты в цикле его разложил на нумерованные переменные и используешь их где-то в модулях.

Через некоторое время ты добавил на форму/в базу что-то. Элементов стало больше. Или удалил элементов стало меньше. Соответственно изменилось число переменных. Ты ждешь 5ть, а пришло 4.

Т.е. в любой произвольный момент у тебя ошибка может появляться и исчезать.
А ты будешь все мозги себе выворачивать пытаясь ее найти.

Добавлено через 5 минут и 31 секунду
supervladislav, если тебя угораздило затолкнуть разные данные в один массив.
То разбирай его ручками. Т.е. отдельно
Код

$myvar = $array[0][0] 

для каждой переменной. И проверяй предварительно все ли у тебя на месте...

Но мой тебе совет - спили мушку.
Т.е. перепиши код так, чтобы массив у тебя содержал только однородные/связанные данные.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
supervladislav
Дата 24.5.2008, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



а как мне её спилить ???эту часть кода писал не я  ,я к сожалению  в некотрых местах неразобрался ,
а там вот такое чудо.это код ввода формы,где чеккобксы появляются или исчезаю ,в зависимости от содержимого массива ttype2 
Код

<? mysql_data_seek($tt1,0);
            while ($datt1=mysql_fetch_array($tt1)) {
                $tt2=mysql_query("SELECT * FROM $T_TTYPE3 WHERE ttype='$datt1[name]' ORDER BY num ASC;"); // тип недвижимости ?>
                <td align=left valign=top><span class=gr>
                <? while($datt2=mysql_fetch_array($tt2)) { ?>
                    <? if($ttype2 == $datt1[name]) { echo "<input onclick='disable_ttype3($datt2[razd]);' type=checkbox name=ttype3[$datt2[razd]][] value='$datt2[name]' style='visibility: visible;'>"; }
                    else { echo "<input onclick='disable_ttype3($datt2[razd]);' type=checkbox name=ttype3[$datt2[razd]][] value='$datt2[name]' style='visibility: hidden;'>"; }
                    echo $datt2[name]."<br>"; ?>
                <? }
                if ($datt1[name] != "Недвижимость для автотранспорта") {
                    echo "<hr>";
                    $tt2=mysql_query("SELECT * FROM $T_TTYPE3 WHERE ttype='Дополнительно' ORDER BY num ASC;");
                    while($datt2=mysql_fetch_array($tt2)) {?>
                        <? if($ttype2 == $datt1[name]) { echo "<input type=checkbox name=name=ttype3[$datt2[razd]][]  value='$datt2[name]' style='visibility: visible;'>"; }
                        else { echo "<input type=checkbox name=ttype3[$datt2[razd]][] value='$datt2[name]' style='visibility: hidden;'>"; }
                        echo $datt2[name]."<br>"; ?>
                <? }
                 } ?>


Это сообщение отредактировал(а) supervladislav - 24.5.2008, 18:40
PM MAIL   Вверх
Fortop
Дата 24.5.2008, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(supervladislav @  24.5.2008,  18:39 Найти цитируемый пост)
а как мне её спилить ???эту часть кода писал не я  ,я к сожалению  в некотрых местах неразобрался ,

Разберись.
- какие данные выводятся
- для чего
- как их можно организовать/сгруппировать.




--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
supervladislav
Дата 25.5.2008, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



блин решил короче я писать всётаки с многомерными ибо другого способа пока я не вижу.
Ребят подскажите пожалуйста как через цикл обратиться к первому  эллементу многомерного массива и записать все данные из него в переменную структура массива вот такая 
Array ( [1] => Array ( [0] => 1 комнатная квартира [1] => 2 комнатная квартира [2] => 3 комнатная квартира [3] => 4-х и более к кв. ) )
вот блин что-то я пока не догоняю ,но наверное так 
Код

$ttype[1]


 где 1 енто то самый массив ,как будет цикл выглядеть ,и лучше сделать енто через while или for
да и скажите наконец как можно это сделать с помощью циклов foreach

Это сообщение отредактировал(а) supervladislav - 25.5.2008, 23:44
PM MAIL   Вверх
Fortop
Дата 25.5.2008, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



supervladislav, 

Код

$a = array(1 => array('1q', 2, '3q', '4q'));
$p = $a[1];
$itog = '';
foreach ($p as $key => $val) {
    $itog .= $val . PHP_EOL;
}

echo $itog;



--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
supervladislav
Дата 26.5.2008, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



во написал ,всем кто помог спасибо ))))
Fortop тебе особенно спасибо 

Код

$kolvomas3=count($ttype3);
$kolvomas=count($ttype3[0],1);
$kolvomas2=count($ttype3[1],1);
echo $kolvomas3;

if(!empty($ttype3[0])){
if($kolvomas>1){$t_ttype4.="AND ( ";}
foreach($ttype3[0] as $key=>$value1)
{$kol1++;
if($kol1==1 and $kolvomas==1)
{$t_ttype4.="AND dopol='$value1' ";}
elseif($kol1!=$kolvomas)
{$t_ttype4.=" dopol='$value1' OR ";}
elseif($kol1==$kolvomas)
{$t_ttype4.=" dopol='$value1' ";}
}if(count($ttype3[0],1)>1){$t_ttype4.=" )";}

if (!empty($ttype3[1])){
if($kolvomas2>=2){$t_ttype3.="AND ( ";}
{foreach($ttype3[1] as $key2=>$value2)
{$ko22++;
if($ko22==1 and $kolvomas2==1)
{$t_ttype3.="AND ttype3='$value2' ";}
elseif($ko22!=$kolvomas2)
{$t_ttype3.=" ttype3='$value2' OR ";}
elseif($ko22==$kolvomas2){$t_ttype3.=" ttype3='$value2' ";}
}
if($kolvomas2>1){$t_ttype3.=")";}}
}}
elseif(!empty($ttype3[1]) and empty($ttype3[0])){



if($kolvomas2>=2){$t_ttype3.="AND ( ";}
foreach($ttype3[1] as $key2=>$value2)
{$ko22++;
if($ko22==1 and $kolvomas2==1)
{$t_ttype3.="AND ttype3='$value2' ";}
elseif($ko22!=$kolvomas2)
{$t_ttype3.=" ttype3='$value2' OR ";}
elseif($ko22==$kolvomas2){$t_ttype3.=" ttype3='$value2' ";}
}
if($kolvomas2>1){$t_ttype3.=")";}





        
}


Это сообщение отредактировал(а) supervladislav - 26.5.2008, 16:26
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0717 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.