【发布时间】:2017-06-27 07:59:11
【问题描述】:
Edit1:问题:我想在 php 中将关联数组转换为索引数组。所以我可以通过 json_encode 将它作为一个数组而不是作为一个对象返回。为此,我尝试填充缺失的键。这里是描述:
遇到一个小问题,需要将一个json_encoded数组作为数组传给js。目前它返回一个对象。我正在使用 Angular,所以我真的需要一个数组。我尽量解释清楚。
$arrNew[0][5][0][0][1]["id"] = 1;
//$arrNew[0][0][0][0][1] = "";
//$arrNew[0][1][0][0][1] = "";
//$arrNew[0][2][0][0][1] = "";
//$arrNew[0][3][0][0][1] = "";
//$arrNew[0][4][0][0][1] = "";
$arrNew[0][5][0][0][1]["name"] = 'Test';
var_dump($arrNew);
所以如果我现在返回它它返回第二个元素作为缺少索引 0-4 的对象原因和缺少索引 0 的第四个元素原因(关联数组 -> 对象)
因此,如果我取消注释该块,它就像一个魅力。现在我遇到的问题不是每次元素 5 有时是 3、4 或其他东西,所以我构建了一个自动添加它们的函数:
$objSorted = cleanArray($arrNew);
function cleanArray($array){
end($array);
$max = key($array) + 1; //Get the final key as max!
for($i = 0; $i < $max; $i++) {
if(!isset($array[$i])) {
$array[$i] = '';
} else {
end($array[$i]);
$max2 = key($array[$i]) + 1;
for($i2 = 0; $i2 < $max2; $i2++) {
.... same code repeats here for every index
问题: 在 js 方面它仍然是一个对象,我还看到元素没有排序。所以我认为不知何故 PHP 仍然将它视为一个关联数组。任何线索为什么会发生这种情况?键是用循环的索引设置的,并且必须是整数值。
PS:我知道在 JS 中重新编写它是可能的,但几乎每个请求都可以使用大量循环来完成
【问题讨论】:
-
我不清楚……你需要那里的钥匙
5吗?那么它就不能被编码为一个数组。或者您是在问如何摆脱密钥5以便将其编码为数组?您究竟期望什么 JSON 数据? -
@deceze 我需要密钥 5 并通过 json_encode 作为数组返回。所以我尝试用零值填充缺失的键
-
好吧,这更有意义。可能想edit这个问题澄清一下。
-
你想在JS中获取数组而不是对象吗?
-
如果有人能解释为什么这个问题会如此被否决,那就太好了,我的意思是我发布了一个明确的例子。输出和我的期望。不知道我在这里做错了什么。