0

我需要在关联数组中分配一个数字作为键名,但如果我这样做:

// Places (generated by mysql)
$places = array (
    0 => '1234',
    1 => '2345'
 );

// Week stats (generated by mysql)
$week = array (
  1234 => 
  array (
    0 => 
    array (
      'iid' => '1234',
      'mid' => 'xxxxxxxx',
      'name' => 'Name1',
    ),
    1 => 
    array (
      'iid' => '1234',
      'mid' => 'xxxxxxxx',
      'name' => 'Name3',
    )
  ),
  2345 => 
  array (
    0 => 
    array (
      'iid' => '2345',
      'mid' => 'xxxxxxxx',
      'name' => 'Name2',
    ),
    2 => 
    array (
      'iid' => '2345',
      'mid' => 'xxxxxxxx',
      'name' => 'Name4',
    )
   )
  );

  foreach($places as &$place) {

     echo $place;

     $i = 0;

     foreach($week[$i] as &$value) {

       echo $value["name"];
       $i++;
     }

  }

它不起作用: http ://codepad.viper-7.com/Y1g37t

因为似乎我应该这样称呼它:

echo $arr[<specific index>];

相反,我需要将“1234”和“2345”设置为字符串,就像这个数组:

$arr = Array("foo" => "bar");

所以我可以用

$arr[0] // bar

我能怎么做?

解决方案

感谢@kirilloid

我使用这个代码:

$vararr = array_keys($week);
$key =  $vararr[$i];

拿到钥匙

4

4 回答 4

3

这是因为它是一个映射,并且映射将值与键相关联,因此您必须这样做:

<?php
$myNumber = 1234;
$myValue = "foo";
$arr = Array( $myNumber => $myValue );
echo $arr[1234];
?>

并且不要忘记在第一行替换“:”!

要迭代“地图”,您可以使用 foreach 函数:

foreach($arr as $key=>$value) {
    echo $key;
    echo $value;
}

这应该显示您的键和相关的值:

1234
foo

这是一个简单数组的区别:

$array = array("foo", "bar", "hallo", "world");
echo $array[0];
于 2013-09-04T22:17:09.223 回答
2

您可以使用array_keys

echo $arr[array_keys($arr)[0]];

重置当前

reset($arr);
echo current($arr);
于 2013-09-04T22:15:42.773 回答
2

这里没有问题 - 这是它应该如何工作的。

如果你创建一个这样的数组:

$myNumber = 1234;
$myValue = "foo";
$arr = Array( $myNumber => $myValue );

那么元素的索引是1234,而不是0

你可以用echo $arr[1234]

如果你需要遍历数组,你可以这样做

foreach($arr as $key=>$value) {
  // do something with $value
}
于 2013-09-04T22:16:40.787 回答
0

没有问题。由于 $myNumber 的值为 1234,您应该像这样访问数组元素:

echo $arr[1234];

如果您需要在 foo 循环中访问它们,您可以将键作为数组获取:

$keys = array_keys($arr);
$keys_count = count($keys);
for ($i=0; i<$keys_count; $i++) {
    echo $arr[$keys[$i]];
}    
于 2013-09-04T22:14:48.683 回答