将number指定为数组键名

时间:2013-09-04 22:11:04

标签: php arrays

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

// 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 个答案:

答案 0 :(得分: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];

答案 1 :(得分:2)

您可以使用array_keys

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

resetcurrent

reset($arr);
echo current($arr);

答案 2 :(得分:2)

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

如果您创建这样的数组:

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

然后元素的索引是1234,而不是0

您可以使用echo $arr[1234]

检索它

如果需要循环遍历数组,可以使用

进行循环
foreach($arr as $key=>$value) {
  // do something with $value
}

答案 3 :(得分:0)

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

echo $arr[1234];

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

$keys = array_keys($arr);
$keys_count = count($keys);
for ($i=0; i<$keys_count; $i++) {
    echo $arr[$keys[$i]];
}