如何知道php中特定值的数组索引

时间:2017-08-28 09:45:44

标签: php arrays

我有来自数据库的以下数组:

Array ( 
    [0] => stdClass Object ( 
        [cSize] => 120x60 
        [cFilename] => 29955_120x60.png 
        [dtLastUpdated] => 2017-06-11T18:18:34-07:00 
        [cURL] => http://logos.formetocoupon.com/120x60/29955.png 
    ) 
    [1] => stdClass Object ( 
        [cSize] => 280x210 
        [cFilename] => 29955_280x210.png 
        [dtLastUpdated] => 2017-08-15T23:31:05-07:00 
        [cURL] => http://logos.formetocoupon.com/280x210/29955.png 
    ) 
    [2] => stdClass Object ( 
        [cSize] => 600x450 
        [cFilename] => 29955_600x450.png 
        [dtLastUpdated] => 2017-08-15T23:31:05-07:00 
        [cURL] => http://logos.formetocoupon.com/600x450/29955.png 
    ) 
    [3] => stdClass Object ( 
        [cSize] => 88x31 
        [cFilename] => 29955_88x31.png 
        [dtLastUpdated] => 2017-06-11T18:18:34-07:00 
        [cURL] => http://logos.formetocoupon.com/88x31/29955.png 
    ) 
)

我想知道包含图像大小120x60的数组的索引。

我做了这个

$data=json_decode($value->aLogos);
$searchValue="120x60";
if (($key = array_search($searchValue, $data)) !== false) {
   print_r($key);
}

但它什么都没打印。我该如何解决这个问题?任何建议都非常感谢。感谢

2 个答案:

答案 0 :(得分:2)

那么你的第一个问题是你不是在搜索一个数组数组而是搜索一个对象数组。

你的第二个问题是即使它是一个数组数组,array_search也不会做多维数组。

相反,在原始PHP中考虑这样的事情:

$data = json_decode($value->aLogos);
$searchValue="120x60";
foreach($data as $key => $obj) {
    if ($searchValue == $obj->cSize) {
        break;
    }
}
echo $key; //holds key of first object with desired value

或者,请在此处查看array_search_deep方法:http://brandonwamboldt.github.io/utilphp/#array_search_deep

答案 1 :(得分:1)

你需要使用key函数

大致做这样的事情
foreach ($data as $value){
   if ($value->cSize=="120x60"){
       echo key($data);
}