是否可以定义一个数组,我可以通过它们的字符串和数字索引来访问元素?
答案 0 :(得分:7)
array_values()
将返回数组中的所有值,其索引将替换为数字值。
$x = array(
'a' => 'x',
'b' => 'y'
);
$x2 = array_values($x);
echo $x['a']; // 'x'
echo $x2[0]; // 'x'
另一种方法是建立一组参考索引。
function buildReferences(& $array) {
$references = array();
foreach ($array as $key => $value) {
$references[] =& $array[$key];
}
$array = array_merge($references, $array);
}
$array = array(
'x' => 'y',
'z' => 'a'
);
buildReferences($array);
请注意,只有在您不打算添加或删除索引时才能执行此操作。您可以编辑它们。
答案 1 :(得分:3)
你可以这样做。
$arr = array(1 => 'Numerical', 'two' => 'string');
echo $arr[1]; //Numerical
echo $arr['two']; //String
答案 2 :(得分:3)
PHP允许混合使用字符串和数字索引元素。
$array = array(0=>'hello','abc'=>'world');
echo $array[0]; // returns 'hello'
echo $array['0']; // returns 'hello'
echo $array['abc']; // returns 'world';
echo $array[1]; // triggers a PHP notice: undefined offset
仔细查看最后一项$array[1]
,可以发现它不等同于数组的第二个元素。
答案 3 :(得分:3)
martswite的回答是正确的,虽然如果你已经有一个关联数组,它可能无法解决你的问题。以下是丑陋的黑客来解决这个问题 - 应该不惜一切代价避免:
$a = array(
'first' => 1,
'second' => 2,
'third' => 3
);
$b=array_values($a);
print $b[2];