仅使用数组索引号从关联数组访问值
access values from a associative array only using there array index number
首先我有这个关联数组
$players = array("group1" => array("player1" => "Kevin Durant", "player2" => "Kyrie Irving"), "group2" => array("player1" => "Demian Lillard", "player2" => "Derrick Rose"));
我知道我可以使用这种循环方式
//create an empty array to be used as a container for our looped array
$data_arrays = array();
foreach($players as $data=>$key):
array_push($data_arrays,$key['player1'],$key['player2']);
endforeach;
但我想要的是根据数组索引获取值,例如
foreach($players as $data=>$key):
array_push($data_arrays,$key[0],$key[1]);
endforeach;
但不幸和可悲的是,它返回了一个错误,
Undefined offset: 0
有什么帮助、线索、建议、建议、想法吗?
你可以使用 array_values()
:
foreach($players as $data=>$key):
$groupPlayers = array_values( $key );
array_push($data_arrays,$groupPlayers[0],$groupPlayers[1]);
endforeach;
附带说明:您对变量名 $data
和 $key
的使用相当不正统:键是数组元素的索引,数据通常被认为是数组的值元素。所以我建议切换它们,即:
foreach($players as $key=>$data):
$groupPlayers = array_values( $data );
array_push($data_arrays,$groupPlayers[0],$groupPlayers[1]);
endforeach;
像这样的东西会起作用:
<?php
$players = array("group1" => array("player1" => "Kevin Durant", "player2" => "Kyrie Irving"), "group2" => array("player1" => "Demian Lillard", "player2" => "Derrick Rose"));
$data_arrays = array();
foreach($players as $data => $key):
$data_arrays = array_merge($data_arrays, array_values($key));
endforeach;
print_r($data_arrays);
演示:http://sandbox.onlinephpfunctions.com/code/e5133c3f317beccc5c2b0bbd56770359a1040c37
使用 array_reduce 的另一种更短的方法:
$players = array("group1" => array("player1" => "Kevin Durant", "player2" => "Kyrie Irving"), "group2" => array("player1" => "Demian Lillard", "player2" => "Derrick Rose"));
$players = array_reduce($players, function(&$players, $v) {return array_merge(array_values($players), array_values($v));}, array());
print_r($players);
演示:http://sandbox.onlinephpfunctions.com/code/92c51ac92fdfde40df3e4fc9d469d52d19f05376
首先我有这个关联数组
$players = array("group1" => array("player1" => "Kevin Durant", "player2" => "Kyrie Irving"), "group2" => array("player1" => "Demian Lillard", "player2" => "Derrick Rose"));
我知道我可以使用这种循环方式
//create an empty array to be used as a container for our looped array
$data_arrays = array();
foreach($players as $data=>$key):
array_push($data_arrays,$key['player1'],$key['player2']);
endforeach;
但我想要的是根据数组索引获取值,例如
foreach($players as $data=>$key):
array_push($data_arrays,$key[0],$key[1]);
endforeach;
但不幸和可悲的是,它返回了一个错误,
Undefined offset: 0
有什么帮助、线索、建议、建议、想法吗?
你可以使用 array_values()
:
foreach($players as $data=>$key):
$groupPlayers = array_values( $key );
array_push($data_arrays,$groupPlayers[0],$groupPlayers[1]);
endforeach;
附带说明:您对变量名 $data
和 $key
的使用相当不正统:键是数组元素的索引,数据通常被认为是数组的值元素。所以我建议切换它们,即:
foreach($players as $key=>$data):
$groupPlayers = array_values( $data );
array_push($data_arrays,$groupPlayers[0],$groupPlayers[1]);
endforeach;
像这样的东西会起作用:
<?php
$players = array("group1" => array("player1" => "Kevin Durant", "player2" => "Kyrie Irving"), "group2" => array("player1" => "Demian Lillard", "player2" => "Derrick Rose"));
$data_arrays = array();
foreach($players as $data => $key):
$data_arrays = array_merge($data_arrays, array_values($key));
endforeach;
print_r($data_arrays);
演示:http://sandbox.onlinephpfunctions.com/code/e5133c3f317beccc5c2b0bbd56770359a1040c37
使用 array_reduce 的另一种更短的方法:
$players = array("group1" => array("player1" => "Kevin Durant", "player2" => "Kyrie Irving"), "group2" => array("player1" => "Demian Lillard", "player2" => "Derrick Rose"));
$players = array_reduce($players, function(&$players, $v) {return array_merge(array_values($players), array_values($v));}, array());
print_r($players);
演示:http://sandbox.onlinephpfunctions.com/code/92c51ac92fdfde40df3e4fc9d469d52d19f05376