【问题标题】:get nth array row number php获取第n个数组行号php
【发布时间】:2013-02-21 04:08:11
【问题描述】:

假设您有以下数组值分配给一个变量,

$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 命令能够做到这一点?

【问题讨论】:

  • 您可以尝试使用 PhpLinq 来执行此操作,它与 .Net 版本非常相似。查看以下链接以获取更多信息。 tech.pro/tutorial/797/basic-linq-syntax-in-php-with-phplinq 它可能不是您要获取的索引,但它会返回整个项目。
  • 如果是id,为什么不首先将该标识符作为数组/哈希索引?

标签: php arrays


【解决方案1】:

我不认为有但很容易设置自己的功能..

function findArrayIndex($arr, $searchId) {

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

    return -1;

}

【讨论】:

  • 当存在 foreach 时,没有任何理由使用 for 循环。投票太低了,抱歉。
  • @Hast 这是一个很好的解决方案,即使它可能不是最佳的。您应该建议修改而不是投反对票。
  • @cowls 在这种情况下使用 for 循环而不是 foreach 实际上被认为是一种不好的做法。并且对于 foreach 我也有一个单独的变量中的索引,看看我的答案:)
  • @MattCain 我投反对票主要是因为引用,而不是因为循环选择。
【解决方案2】:

不,没有这样的功能。实际上有一个array_search(),但你不能将它与对象一起使用。例如,这里有人问了一个类似的问题: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;
}

【讨论】:

    猜你喜欢
    • 2012-08-21
    • 2021-11-06
    • 2011-01-01
    • 2015-06-26
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多