PHP& JS数字和关联数组索引有问题

时间:2010-11-30 23:08:15

标签: php javascript arrays

对于99%的人来说,这个问题可能微不足道。到目前为止,我一直试图避免这样的情况,但现在我没有任何选择。

For PHP:
$array = array();
$array[5] = 'Element';
$array['s_5'] = 'Alternative Element';
$array[7] = 'Element2';
$array['s_7 '] = 'Alternative Element2';

For JS
var array = new Array();
array[5] = 'Element';
array['s_5'] = 'Alternative Element';
array[7] = 'Element2';
array['s_7 '] = 'Alternative Element2';

现在我需要到达数组的第二个元素。怎么做?当然,我可以为每个元素创建另一个包含数组键的表,或者使用foreach / while并对特定元素执行一些操作。我也可以使用end()在PHP中获取最后一个数组元素,但是有没有其他更快的方法从随机数组中获取特定元素(暗示我不知道数组的键和长度)?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您可能希望使用二维数组:

$matrix = array();
$matrix['elements'] = array();
$matrix['alt_elements'] = array();

$matrix['elements'][5] = 'Element';
$matrix['alt_elements'][5] = 'Alternative Element';

...诸如此类

避免在JS中使用关联数组。仅当键是数字时才使用数组。否则,请使用对象。

var matrix = {};
matrix.elements = [];
matrix.altElements = [];

matrix.elements[5] = 'Element';
matrix.altElements[5] = 'Alternative Element';

答案 1 :(得分:0)

关联数组(php)或对象(js)并不意味着数字索引。这包括访问第n个元素。

如果你真的必须这样做,除了在php中使用foreach($arr as $key => $val)或在js中使用for(var key in obj)迭代数组并手动计算元素之外没有好办法。

但是,如果你的数组类似于矩阵,你可能想要创建两个矩阵或者使最里面的元素成为一个数组,这样你就可以得到实际矩阵的普通数值数组,而只是其他内容中的数据。