PHP Array to JSON Array using json_encode();

我已经对使用内置json_encode();函数制作的数组进行了编码。我需要像这样的数组数组格式:


[["Afghanistan",32,12],["Albania",32,12]]

但是,它返回为:


["2":["Afghanistan",32,12],"4":["Albania",32,12]]

如何在不使用任何正则表达式欺骗的情况下删除这些行号?


catspeake
浏览 543回答 3
3回答

HUWWW

如果您的PHP数组中的数组键不是连续的数字,则json_encode() 必须使另一个构造成为一个对象,因为JavaScript数组总是连续地进行数字索引。array_values()在PHP的外部结构上使用,以丢弃原始的数组键,并将其替换为从零开始的连续编号:例:// Non-consecutive 3number keys are OK for PHP// but not for a JavaScript array$array = array(  2 => array("Afghanistan", 32, 13),  4 => array("Albania", 32, 12));// array_values() removes the original keys and replaces// with plain consecutive numbers$out = array_values($array);json_encode($out);// [["Afghanistan", 32, 13], ["Albania", 32, 12]]

慕沐林林

json_encode()函数将帮助您在php 中将数组编码为JSON。如果您直接使用json_encode函数而没有任何特定选项,则它将返回一个数组。喜欢上面提到的问题$array = array(&nbsp; 2 => array("Afghanistan",32,13),&nbsp; 4 => array("Albania",32,12));$out = array_values($array);json_encode($out);// [["Afghanistan",32,13],["Albania",32,12]]由于您正在尝试将Array转换为JSON,那么我建议使用JSON_FORCE_OBJECT作为json_encode中的附加选项(参数),如下所示<?php$array=['apple','orange','banana','strawberry'];echo json_encode($array, JSON_FORCE_OBJECT);// {"0":"apple","1":"orange","2":"banana","3":"strawberry"}&nbsp;?>

慕侠2389804

我想补充一下迈克尔·伯科夫斯基(Michael Berkowski)的答案,即如果将数组的顺序颠倒,也可能发生这种情况,在这种情况下,观察该问题会比较棘手,因为在json对象中,顺序将按升序排列。例如:[&nbsp; &nbsp; 3 => 'a',&nbsp; &nbsp; 2 => 'b',&nbsp; &nbsp; 1 => 'c',&nbsp; &nbsp; 0 => 'd']将返回:{&nbsp; &nbsp; 0: 'd',&nbsp; &nbsp; 1: 'c',&nbsp; &nbsp; 2: 'b',&nbsp; &nbsp; 3: 'a'}所以这种情况下的解决方案是array_reverse在将其编码为json之前使用
打开App,查看更多内容
随时随地看视频慕课网APP