我有以下数组
Array (
[0] => Array (
[name] => 1
[count] => 77937
)
[1] => Array (
[name] => 2
[count] => 20
)
[2] => Array (
[name] => 4
[count] => 25
)
[3] => Array (
[name] => 5
[count] => 11365
)
)
如何在不循环播放数组的情况下获取名称3的计数?
答案 0 :(得分:2)
索引一次,经常阅读:
$indexed = array();
foreach ($arr as $values) {
$indexed[$values['name']] = $values;
}
echo $indexed[3]['count'];
答案 1 :(得分:1)
如果您使用的是PHP 5.5,则可以使用array_column
:
$index = array_column($arr, 'count', 'name');
echo $index[3];
你可以用一行实际做到这一点:
echo array_column($arr, 'count', 'name')[3];
除此之外,循环是你最好的选择。
答案 2 :(得分:0)
试试这个:
$p = array(array('name' => 1, 'count' => 77937),
array('name' => 2, 'count' => 20),
2 => array('name' => 4, 'count' => 25),
3 => array('name' => 5, 'count' => 11365));
class my_finder
{
private $n;
function __construct($n)
{
$this->n = $n;
}
function findByName($arr)
{
return $arr['name'] == $this->n;
}
}
$matches = array_filter($p, array(new my_finder(4), 'findByName'));
print_r ($matches);
当然,这只是假装没有循环。无论如何,array_filter都会遍历数组。
答案 3 :(得分:-2)
试试这个,我在功能中为名字字段选择了2 ...
<?php
global $count;
$temp = array(
'0' => array ( 'name' => 1, 'count' => 77937 ),
'1' => array ( 'name' => 2 ,'count' => 20 ),
'2' => array ( 'name' => 4 ,'count' => 25 ),
'3' => array ( 'name' => 5, 'count' => 11365)
);
function mapper($data)
{
global $count;
if($data['name'] == 2)
$count = $data['count'];
}
array_map('mapper',$temp);
echo $count;