如何解决基本数组引用PHP
如何引用以下动态数组的元素?
$log = array();
$arr1 = array ('a'=>'6:16pm','b'=>2,'c'=>3,'d'=>4,'e'=>5);
$arr2 = array ('a'=>'6:24pm','b'=>20,'c'=>30,'d'=>40,'e'=>50);
$log = array_merge($log,array($arr1['a']=>$arr1));
$log = array_merge($log,array($arr2['a']=>$arr2)); //<-- to use time as key
print_r($log);
for ($x = 0; $x < count($log); $x++) {
print_r ($log[0][$x]['a']); // <-- referencing issue Undefined offset: 0 .. line 20
}
//------ produces
Array
(
[6:16pm] => Array
(
[a] => 6:16pm
[b] => 2
[c] => 3
[d] => 4
[e] => 5
)
[6:24pm] => Array
(
[a] => 6:24pm
[b] => 20
[c] => 30
[d] => 40
[e] => 50
)
)
我很确定它与我命名$ log主数组的方式有关..可能有一种更好的方法来实现我的愿望(..时间键)-不幸的是,仍然是php noob。感谢您的指导。
解决方法
如果您不知道密钥,建议您使用foreach语句:
$logs = array();
$arr1 = array ('a'=>'6:16pm','b'=>2,'c'=>3,'d'=>4,'e'=>5);
$arr2 = array ('a'=>'6:24pm','b'=>20,'c'=>30,'d'=>40,'e'=>50);
$logs = array_merge($logs,array($arr1['a']=>$arr1));
$logs = array_merge($logs,array($arr2['a']=>$arr2)); //<-- to use time as key
$logs = array();
$arr1 = array('a' => '6:16pm','b' => 2,'c' => 3,'d' => 4,'e' => 5);
$arr2 = array('a' => '6:24pm','b' => 20,'c' => 30,'d' => 40,'e' => 50);
$logs = array_merge($logs,array($arr1['a'] => $arr1));
$logs = array_merge($logs,array($arr2['a'] => $arr2)); //<-- to use time as key
foreach ($logs as $time => $log) {
//index:
print_r($time);
//array:
print_r($log);
// a array key:
print_r($log['a']);
//go through all keys:
foreach ($log as $letter => $value) {
//index:
print_r($letter);
//value: a
print_r($value);
}
}
,
这还不清楚,但是只需从两者创建一个数组并使用a
索引:
$log = array($arr1,$arr2);
foreach($log as $values) {
echo $values['a']; // 6:16pm
}
或者如果您希望时间作为索引,则在a
上重新索引:
$log = array($arr1,$arr2);
$log = array_column($log,null,'a');
foreach($log as $time => $values) {
echo $time; // 6:16pm
echo $values['b']; // 2
}
它很漂亮,但是没有时间作为索引,除非您要使用ksort
或按索引访问:
echo $log['6:16pm']['b'];
,
您不能像这样调用数组
print_r ($log[0]);
因为您的阵列具有键。第一个是6:16pm
,第二个是6:24pm
。您必须通过分配的键名来调用它。您的数组即使在循环中的任何地方都应该这样调用
print_r ($log["6:16pm"]);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。