为了账号安全,请及时绑定邮箱和手机立即绑定

PHP Array to JSON Array using json_encode();

PHP Array to JSON Array using json_encode();

PHP
catspeake 2019-10-10 14:13:53
我已经对使用内置json_encode();函数制作的数组进行了编码。我需要像这样的数组数组格式:[["Afghanistan",32,12],["Albania",32,12]]但是,它返回为:["2":["Afghanistan",32,12],"4":["Albania",32,12]]如何在不使用任何正则表达式欺骗的情况下删除这些行号?
查看完整描述

3 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

如果您的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]]


查看完整回答
反对 回复 2019-10-10
?
慕沐林林

TA贡献2016条经验 获得超9个赞

json_encode()函数将帮助您在php 中将数组编码为JSON。


如果您直接使用json_encode函数而没有任何特定选项,则它将返回一个数组。喜欢上面提到的问题


$array = array(

  2 => array("Afghanistan",32,13),

  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"} 

?>


查看完整回答
反对 回复 2019-10-10
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

我想补充一下迈克尔·伯科夫斯基(Michael Berkowski)的答案,即如果将数组的顺序颠倒,也可能发生这种情况,在这种情况下,观察该问题会比较棘手,因为在json对象中,顺序将按升序排列。


例如:


[

    3 => 'a',

    2 => 'b',

    1 => 'c',

    0 => 'd'

]

将返回:


{

    0: 'd',

    1: 'c',

    2: 'b',

    3: 'a'

}

所以这种情况下的解决方案是array_reverse在将其编码为json之前使用


查看完整回答
反对 回复 2019-10-10
  • 3 回答
  • 0 关注
  • 542 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信