我无法使用PHP访问数组的更深部分并将其以某种方式显示在页面上。
我正在尝试显示带有城市和计数的数据:
Mobile (3)
Auburn (2)
这是我的数组:
Array
(
[0] => Array
(
[0] => Array
(
[city] => Mobile
[numLocations] => 3
)
[1] => Array
(
[city] => Auburn
[numLocations] => 2
)
)
)
这是我到目前为止所拥有的。这只会显示单词“ Array”。
while($row = mysqli_fetch_assoc($result)){
$state = $row['state'];
$stateAbv = $row['stateAbv'];
$city = $row['city'];
$numSLocations = $values['cnt'];
if (!isset($rows[$row['state']])){
$rows[$row['state']] = array();
}
$rows[$row['state']][] = ['city' => $city, 'numLocations' => $numLocations];
}
foreach($rows as $state => $cities){
echo array_column($cities, 'numLocations'));
}
答案 0 :(得分:2)
我正在尝试用城市和计数显示这样的数据:
移动(3)
奥本(2)
未经测试
while($row = mysqli_fetch_assoc($result)){
if (!isset($rows[$row['state']])) $rows[$row['state']] = 0; //initialize with 0
$rows[$row['state']] += $row['cnt']; //increment the num Stores
}
行应该是这样的:
['Mobile' => 3, 'Auburn' => 2]
您也遇到了这个问题( $ values ):
$numSLocations = $values['cnt'];
换句话说,$values
是什么,如果没有更多上下文,就无法知道它是什么。我只是假设您的意思是$row
然后(如果您真的想使用()并返回2行。)
foreach($rows as $state => $num){
echo "$state ($num)\n\n";
}
输出
Mobile (3)
Auburn (2)
如果您尝试转换该数组,我不知道这与该数组有什么关系(MySql结果):
print_r(array_column($array[0], 'numLocations', 'city'));
这仅在city
是唯一且不会递增的情况下起作用。
这只会显示单词“ Array”。
当然,由于array_column
返回一个数组(正如我上面刚刚显示的那样),并且您无法回显Array,因此可以,但是它只会显示“ Array”。这段代码正是这样做的:
foreach($rows as $state => $cities){
echo array_column($cities, 'numLocations')); //returns an array
}
因此,请改用print_r
或var_export
等...以上结果将类似于:
[0 => 3,1 => 2]
基本上是这样的:
array_column($array[0], 'numLocations')
干杯!
答案 1 :(得分:1)
感觉您只有第一个索引,可以通过array_shift
跳过它
$row = array_shift($row);
// now fetch both the data.
$temp = array_column('numLocations','city');
foreach($temp as $k => $v){
$result[] = $k.'('.$v.')';
}
这应该可以解决您的问题。