如何在PHP数组中定义自定义键?

时间:2013-12-22 15:45:01

标签: php arrays

我想定义一个二维数组,如下所示:

   [40.1][John]
   [40.2][Jane]
   [40.7][Mary]       
   [40.10][Sara]    

换句话说,我想用自定义键定义一个数组。稍后我需要使用自定义键访问数组值。例如:

   echo(myarray[40.2]);

我需要从XML动态生成数组,因为这些值来自XML文件。 我想从中生成数组的XML文件如下所示:

    <rules>

<rule>
    <id>40.1</id>
    <regex><![CDATA[/(?:\)\s*when\s*\d+\s*then)/]]></regex>
</rule>
<rule>
    <id>40.2</id>
    <regex><![CDATA[/(?:"\s*(?:#|--|{))/]]></regex>
</rule>

我应该如何创建具有上述特征的数组?

3 个答案:

答案 0 :(得分:10)

您可以通过创建关联数组

轻松完成此操作
$myarray = array(
  "40.1" => "John",
  "40.2" => "Jane",
  "40.7" => "Mary",
  "40.10" => "Sara"
);

稍后您可以使用foreach循环遍历此数组

foreach($myarray as $key => $value) {
  echo "<p>" . $key . " = " . $value . "</p>";
}

这将输出到屏幕

40.1 = John
40.2 = Jane
40.7 = Mary
40.10 = Sara

创建新数组并添加项目就像这样简单

$myarray = array();
$myarray[$newkey] = $newvalue;

对于二维数组,您可以像这样定义它们

$myarray = array();
$myarray[$key] = array();
$myarray[$key]['John'] = 'some value';
$myarray[$key]['Jane'] = 'another value';
$myarray[$key2] = array();
$myarray[$key2]['Mary']= 'yet another value';

或者作为捷径

$myarray = array(
  $key => array(
   'John' => 'some value',
   'Jane' => 'another value',
  ),
  $key2 = array(
   'Mary' => 'yet another value'
  )
);

答案 1 :(得分:1)

你可以用associative array key =&gt;来做到这一点。值。

$arr = array('40.1' => 'John', '40.2' => 'Jane', '40.7' => 'Mary', ...);
echo $arr['40.1']; // will return John

如果您考虑扩展功能中的数据,可以使用嵌套数组

$arr = array(
'40.1' => array('name' => 'John', 'eyes' => 'green');
'40.2' => array('name' => 'Jane', 'eyes' => 'blue');
);

您可以像这样访问嵌套数组:

echo $arr['40.2']['eyes'] // return blue

您还可以查看有关数组here

的PHP文档

答案 2 :(得分:0)

数组键

<强>通知!不要将“float”用作数组键的类型。

<?php
$array = array(
    1    => "a",
    "1"  => "b",
    1.5  => "c",
    true => "d",
);
var_dump($array);

输出将是:

array(1) {
  [1]=>
  string(1) "d"
}

取自http://www.php.net/manual/en/language.types.array.php

二维数组

您可以像这样创建数组:

$data = [
   '40.2' => [
       'John' => [ 
           // and now this is second dimension
       ] 
   ]
];

添加附加内容:

$data['40.2']['John'][] = ; // just append value 
// or 
$data['40.2']['John']['sex'] = 'Male'; // store it with key

或者,如果您需要存储标量值,可以像这样定义数组:

$data = [
   '40.2' => [
       'John' => 'male' // storing scalar values  
   ]
];

抱歉,如果我误解了你的问题。