2016-03-01 73 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

謝謝隊友。它的工作;) – Demolog

1

在foreach循環我不會做到這一點,更明智的方法是使用for循環因爲所有索引都是數字。

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