我想定义一个二维数组,如下所示:
[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>
我应该如何创建具有上述特征的数组?
答案 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
]
];
抱歉,如果我误解了你的问题。