2016-03-01 10 views
1

Привет У меня такой массив структуры. Я хотел бы сравнить в этом цикле условие.Php Array многомерное ассоциативное значение сравнения

if(dataInto[0]>=MyDataTypeFromInput && dataOut[0]<=MyDataTypeFromInput && room[0]==MyIdRoom) {...} 

вместо этого индекс 0, это должно работать в петле foreach. Поэтому сравните индекс [0] с индексом [0] [1] с [1] и т. Д.

Как это сделать?

[ 
'dataInto' => [ 
    0 => '2016-07-14 14:50' 
    1 => '2016-03-24 14:00' 
    2 => '2016-03-03 06:30' 
] 
'room' => [ 
    0 => 13 
    1 => 14 
    2 => 14 
] 
'dataOut' => [ 
    0 => '2016-07-14 18:10' 
    1 => '2016-03-24 17:20' 
    2 => '2016-03-03 09:50' 
    ] 
] 

ответ

1

Просто выполнить цикл foreach основываясь на длине одного из основных элементов массива:

foreach($array['dataInto'] as $key => $val) 
{ 
    if 
    (
     $array['dataInto'][$key] >= MyDataTypeFromInput 
     && 
     $array['dataOut'][$key] <= MyDataTypeFromInput 
     && 
     $array['room'][$key]  == MyIdRoom 
    ) 
    { 
    ... 
    } 
} 
+0

Thanks mate. Он работает;) – Demolog

1

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

for($i = 0; $i < count($arr['dataInto']); $i++){ 
    if($arr['dataInto'][$i] >= MyDataTypeFromInput 
    && $arr['dataOut'][$i] <= MyDataTypeFromInput 
    && $arr['room'][$i]  == MyIdRoom){ 
    // etc.. 
    } 
} 

Если, однако, вы хотите зацикливать основной массив, то цикл foreach в порядке.

foreach($arr as $key => $value){ 
    echo $key, ', '; // ouput: "dataInto, dataOut, room" 
    foreach($value as $subkey => $subvalue){ 
    echo $subkey, ' -> ', $subvalue; // will first loop dataInto and display all 3 values with numeric keys 0, 1, 2. 
    } 
} 
+0

Я понимаю ваш второй код, но мне нужно найти значение после индекса строки. Есть ли еще какой-то другой способ заставить его работать? Я бы хотел увидеть другое решение;) – Demolog

Смежные вопросы