基本数组引用Php

基本数组引用Php,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,如何引用以下动态数组的元素 $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 = ar

如何引用以下动态数组的元素

$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=array();
$arr1=array('a'=>6:16pm'、'b'=>2、'c'=>3、'd'=>4、'e'=>5);
$arr2=数组('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));//下午6:16
[b] =>2
[c] =>3
[d] =>4
[e] =>5
)
[6:24pm]=>阵列
(
[a] =>下午6:24
[b] =>20
[c] =>30
[d] =>40
[e] =>50
)
)

我很确定这与我命名$log主数组的方式有关。。也许有更好的方法来实现我的愿望(…使用time键向$log添加/添加新元素)-不幸的是,这仍然是一个PHPNoob。感谢您的指点。

如果您不知道您的密钥,建议您使用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);
    }
}
$logs=array();
$arr1=array('a'=>6:16pm'、'b'=>2、'c'=>3、'd'=>4、'e'=>5);
$arr2=数组('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));//下午6时16分,“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));//$日志){
//索引:
打印(时间);
//数组:
打印(日志);
//数组键:
打印($log['a']);
//检查所有键:
foreach($log as$letter=>$value){
//索引:
打印(字母);
//价值:a
打印(价值);
}
}

如果您不知道您的密钥,建议您使用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);
    }
}
$logs=array();
$arr1=array('a'=>6:16pm'、'b'=>2、'c'=>3、'd'=>4、'e'=>5);
$arr2=数组('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));//下午6时16分,“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));//$日志){
//索引:
打印(时间);
//数组:
打印(日志);
//数组键:
打印($log['a']);
//检查所有键:
foreach($log as$letter=>$value){
//索引:
打印(字母);
//价值:a
打印(价值);
}
}

有点不清楚,但只需从这两个元素中创建一个数组,然后使用
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'];

这有点不清楚,但只需从这两个元素中创建一个数组并使用
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点16分,第二个是下午6点24分。您必须通过指定的键名来调用它。在任何地方,甚至在循环中,都应该这样调用数组

print_r ($log["6:16pm"]); 

不能像这样调用数组

print_r ($log[0]); 
因为您的数组具有密钥。第一个是下午6点16分,第二个是下午6点24分。您必须通过指定的键名来调用它。在任何地方,甚至在循环中,都应该这样调用数组

print_r ($log["6:16pm"]); 

问题出在哪里?for循环显示$log[0]。。([$x]['a'])未定义。我试过各种组合……所以。。。。数组中是否有名为0的键?(不,你没有)。我希望有一种方法可以引用动态生成的密钥。。。因此,我可以确定稍后需要删除哪个日志记录。谢谢,顺便说一句。请通过编辑添加所有问题的澄清。问题在哪里?for循环显示$log[0]。。([$x]['a'])未定义。我试过各种组合……所以。。。。数组中是否有名为0的键?(不,你没有)。我希望有一种方法可以引用动态生成的密钥。。。因此,我可以确定稍后需要删除哪个日志记录。谢谢顺便说一句。请通过编辑来为您的问题添加所有澄清。非常感谢。我学到了一些东西…(向上投票)太好了,谢谢你。我学到了一些东西…(向上投票)接受了第二种解决方案“数组列”。接受了第二种解决方案“数组列”。