2017-08-03 50 views
1

在我的項目中,我有數組,當我使用pre標籤回顯它時,它顯示如下。如何找到存在於兩維數組中的值

Array 
(
[0] => stdClass Object 
    (
     [minute] => 1,31 
     [hour] => 0-5 
     [mday] => * 
     [month] => * 
     [wday] => * 
     [who] => root 
     [command] => /usr/bin/nice -n20 adjkerntz -a 
    ) 

[1] => stdClass Object 
    (
     [minute] => 1 
     [hour] => 3 
     [mday] => 1 
     [month] => * 
     [wday] => * 
     [who] => root 
     [command] => /usr/bin/nice -n20 /etc/rc.update_bogons.sh 
    ) 

[2] => stdClass Object 
    (
     [minute] => */60 
     [hour] => * 
     [mday] => * 
     [month] => * 
     [wday] => * 
     [who] => root 
     [command] => /usr/bin/nice -n20 /usr/local/sbin/expiretable -v -t 3600 sshlockout 
    ) 

[3] => stdClass Object 
    (
     [minute] => */60 
     [hour] => * 
     [mday] => * 
     [month] => * 
     [wday] => * 
     [who] => root 
     [command] => /usr/bin/nice -n20 /usr/local/sbin/expiretable -v -t 3600 webConfiguratorlockout 
    ) 

[4] => stdClass Object 
    (
     [minute] => 1 
     [hour] => 1 
     [mday] => * 
     [month] => * 
     [wday] => * 
     [who] => root 
     [command] => /usr/bin/nice -n20 /etc/rc.dyndns.update 
    ) 

[5] => stdClass Object 
    (
     [minute] => */60 
     [hour] => * 
     [mday] => * 
     [month] => * 
     [wday] => * 
     [who] => root 
     [command] => /usr/bin/nice -n20 /usr/local/sbin/expiretable -v -t 3600 virusprot 
    ) 

[6] => stdClass Object 
    (
     [minute] => 30 
     [hour] => 12 
     [mday] => * 
     [month] => * 
     [wday] => * 
     [who] => root 
     [command] => /usr/bin/nice -n20 /etc/rc.update_urltables 
    ) 

[7] => stdClass Object 
    (
     [minute] => */1 
     [hour] => * 
     [mday] => * 
     [month] => * 
     [wday] => * 
     [who] => root 
     [command] => /usr/local/www/checksum.php 
    ) 

) 

現在我要檢查,如果命令=在/ usr /本地/網絡/ checksum.php是存在與否。所以,我做了這個代碼

if (!in_array('/usr/local/www/checksum.php', $array['command'])) { 
    echo 'not'; 
} 
else{ 
    echo 'yes'; 
} 

但它始終沒有迴音......並顯示如下消息,警告:未定義指數:命令。我不知道該怎麼做。請幫幫我。

+1

價值,因爲它是'stdClass的Object'所以你需要像這樣訪問值'$按行> command' – JYoThI

回答

0

您的數組在對象內部找到,因此您必須訪問該對象,然後然後該數組。

你可以做這樣的事情,

if (!in_array('/usr/local/www/checksum.php', $arr[0]->obj['command'])) { 
    echo 'not'; 
}else{ 
    echo 'yes'; 
} 

注意,[0]在這種情況下,意味着你的數組中的第一個對象,所以您要檢查是否存在於所有的數組command,你會要通過他們這樣的迭代:

foreach($arr as $key => $obj){ 

    var_dump(in_array('/usr/local/www/checksum.php', $obj[$key]['command'])); 

} 
0

遍歷數組和檢查值,而你有多維數組

$new_array=array(); 
foreach ($array as $row){ 
if($row['command']=="/usr/local/www/checksum.php"){ 
$new_array[] =$row; 
} 
} 
print_r($new_array); 
0

您正在使用的數組是2維數組。您不能使用此代碼..

if (!in_array('/usr/local/www/checksum.php', $array['command'])) { 
    echo 'not'; 
} 
else{ 
    echo 'yes'; 
} 

,因爲它不包含像[command]的關鍵。

首先打破單維數(正常數組),然後檢查每個元素。這裏是代碼。使用對象方法

$result = 'not'; 
foreach($array as $array_element) { 
    if (strstr($array_element->command, '/usr/local/www/checksum.php')) { 
     $result = 'yes'; 
     break; 
    } 
} 
echo $result; 
0

因爲它是stdClass Object所以你需要像這樣訪問$row->command

foreach ($array as $row){ 

    if($row->command=="/usr/local/www/checksum.php") 
    { 
     echo 'yes'; 
     break; 
    } 

} 
相關問題