0

以这个简单的多维数组为例:

$images Array (

  [0] => Array (
    [image_id] => 18
    [votes] => 12
  )

  [1] => Array (
    [image_id] => 76
    [votes] => 10
  )

  ...

  [n] => Array (
    [image_id] => 2
    [votes] => 1
  )
)

在整个数组中搜索某个image_id值,然后返回该值在image_id较大数组中的位置,并同时返回对应值的最佳方法是什么votes?一些变化array_search()能够管理这个吗?

目前,我正在使用 foreach 循环:

foreach ($images as $image) {
  $i = 0;
  if ($image['image_id'] == $someNeedle) {
    $resultSet['image'] = $image;
    $resultSet['position'] = $i;

    return $resultSet;
  }
  $i++;
}

然而,这似乎过于复杂。是否有本机 PHP 函数可以加快速度/使我的代码更具语义?谢谢。

4

4 回答 4

4

我怀疑您会找到另一种更快或更易于阅读的方法。

foreach ($images as $position => $image) {
  if ($image['image_id'] === $someNeedle) {
    return compact('image', 'position');
  }
}

http://php.net/manual/en/function.compact.php

于 2013-09-02T22:41:15.117 回答
0

没有内置的方法可以准确返回您想要的内容。您可以稍微简化它,但不多:

foreach ($images as $key => $image) {
    if ($image['image_id'] == $someNeedle) {
        return array(
            'image' => $image,
            'position' => $key,
        );
    }
}
于 2013-09-02T22:35:05.510 回答
0

使用key你的数组而不是i,它会给你位置,它可以更快一点:

foreach ($images as $key=>$image) {
  if ($image['image_id'] == $someNeedle) {
    $resultSet['image'] = $image;
    $resultSet['position'] = $key;

    return $resultSet;
  }

}
于 2013-09-02T23:27:28.387 回答
0
array_search($needle, array_column($array, 'column'));

归功于 HCDINH 的回答

于 2017-07-11T04:13:48.070 回答