2017-08-28 71 views
0

数组索引我有以下阵列从数据库中来:怎么知道特定值在PHP

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

做大致的财产以后这样嗯,你的第一个问题是,你不能搜索一个数组的数组,但对象的数组。

第二个问题是,即使它是一个数组数组,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方法在这里:

+0

键名是事先未知的 – RomanPerekhrest

+0

不是我如何解释问题,但如果这是''array_search_deep()''可以处理没有问题的情况:-) – Bananaapple

1

您需要使用key功能

foreach ($data as $value){ 
    if ($value->cSize=="120x60"){ 
     echo key($data); 
} 
+0

键名称是预先未知 – RomanPerekhrest

+0

@RomanPerekhrest,关键是一个函数接受和数组并返回实际索引 – user10089632

+0

你没有得到它:'cSize'在概念上是未知的 – RomanPerekhrest