假设我有一个多维字符串数组:
.food = array(
'vegetable' => array(
'carrot' => 'blablue',
'potato' => 'bluebla',
'cauliflower' => 'blabla'
),
'Fruit' => array(
'apple' => 'chicken65',
'orange' => 'salsafood',
'pear' => 'lokkulakka'
)
);
是否可以使用索引作为数字来访问数组,而不是使用键的名称? 因此,为了访问chicken65,我将输入echo $ food [1] [0];我不想使用数字作为键,因为它是一个大数组,如果我使用字符串作为键,它更加用户友好,它将让我在高级别上进行for循环。
答案 0 :(得分:6)
你可以做foreach循环来实现与典型的for循环相同的东西。
foreach ($foods as $key => $value) {
//For the first iteration, $key will equal 'vegetable' and $value will be the array
}
答案 1 :(得分:4)
$food[1][0] != $food[1]['apple']
,因此在这种情况下您无法使用数字键。
答案 2 :(得分:1)
尝试
$new_array = array_values($food);
但是,变量不能以.
开头。它应该以$
答案 3 :(得分:0)
您可以在阵列上使用array_keys()。生成的数组可以通过for循环遍历,并为您提供关联键。
我将向您展示第一个维度:
$aTest = array('lol' => 'lolval', 'rofl' => 'roflval');
$aKeys = array_keys($aTest);
$iCnt = count($aKeys);
for($i = 0; $i < $iCnt; ++$i)
{
var_dump($aTest[$aKeys[$i]]);
}
您需要针对两个维度执行此操作,但我不建议这样做。它实际上比大多数其他解决方案更加突兀和缓慢。
答案 4 :(得分:0)
你可能想尝试函数array_values但是因为你正在处理multidemsional数组,这里是php程序员发布的解决方案
http://www.php.net/manual/en/function.array-values.php#103905
但使用foreach而不是for。会更容易。
答案 5 :(得分:0)
我认为这条路线没有本土的东西。
看起来你似乎想要拉伸阵列使用了一下。
你应该在这个上去OOP。
创建一个FoodFamilly对象和一个Food对象,您可以在必要时存储数组,并且您将能够编写一个友好的用户友好代码并在需要时添加索引。
OOP几乎总是答案:)