获得第n阵列行数PHP

获得第n阵列行数PHP

问题描述:

假设你有分配给一个变量以下阵列值,获得第n阵列行数PHP

$erz = Array ( 
    [0] => stdClass Object ([id] => 43 [gt] => 112.5) 
    [1] => stdClass Object ([id] => 47 [gt] => 46) 
    [2] => stdClass Object ([id] => 48 [gt] => 23.75) 
    [3] => stdClass Object ([id] => 49 [gt] => 12.5) 
) 

我需要能够获得给出的ID数组索引号。所以,例如我想得到2给定ID 48,或得到3 ID 49,等等。有没有一个PHP命令能够做到这一点?

+0

如果它是一个'id'为什么不把该标识符在数组/哈希索引第一名? – VolkerK 2013-03-06 11:39:55

+0

您可以尝试使用PhpLinq来做到这一点,它与.Net版本非常相似。查看以下链接了解更多信息。 http://tech.pro/tutorial/797/basic-linq-syntax-in-php-with-phplinq它可能不是你正在寻找的索引,但它会返回整个项目。 – 2013-03-06 11:36:08

我不认为有,但很容易建立自己的功能..

function findArrayIndex($arr, $searchId) { 

    $arrLen = count($arr); 
    for($i=0; $i < $arrLen; $i++) { 
     if($arr[$i][id] == $searchId) return $i; 
    } 

    return -1; 

} 
+0

为什么id被引用? – Hast 2013-03-06 11:37:02

+0

当foreach存在时,没有任何理由使用for循环。所以低调,对不起。 – Hast 2013-03-06 11:38:43

+0

@即使它可能不是最优的,它也是一个很好的解决方案。你应该建议编辑而不是downvote。 – 2013-03-06 11:50:16

没有,有没有这样的funcion。实际上有一个array_search(),但不能将它与对象一起使用。例如,这里已经被问了一个问题simmilar:PHP - find entry by object property from a array of objects

所以,你必须使自己的循环:

$result = null; 
$givenID = 43; 
foreach ($erz as $key => $element) 
{ 
    if ($element->id == $givenID) 
     $result = $key; 
}