【问题标题】:How to change values in a json array如何更改json数组中的值
【发布时间】:2015-06-07 13:37:26
【问题描述】:

我有一个来自 mysqli 查询的 JSON 数组,我需要更改其中的一些值,然后再将其传递给 Datatables。

"released" : 0 应该打印“No”,如果值为 1,则打印“Yes”。 "sex" : 1 是女性,而 "sex": 0 是男性。

如何在这个数组中替换这些字符串?

[{
    "id": "3",
    "river": "Dirdalselva",
    "pool": "Sone 1",
    "fish": "Sjøørret",
    "date": "2009-06-18",
    "weight": "1300",
    "length": "65",
    "fly": "Dryfly",
    "released": "0",
    "picture": "http:\/\/localhost\/php\/files\/35409ec6762544c55500b32a7ff37ee9.jpeg",
    "sex": "1",
    "user": "Filip"
}

这是我获取数组的方法:

$myArray = array();
if ($result = $mysqli->query("SELECT * FROM fish")) {

    while($row = $result->fetch_array(MYSQL_ASSOC)) {
        $myArray[] = $row;
    }
    echo json_encode($myArray);
}

【问题讨论】:

  • 您自己对结果进行 json_encoding。您可以在编码之前使用 PHP 常规方式(例如“=”运算符)更改其内容。

标签: php arrays json mysqli


【解决方案1】:

您实际上有一个来自 mysqli 查询的 PHP 数组。因此,您应该能够在将它们分配给 $myArray 之前更改 $row 的值。

$row['released'] = ($row['released'] == 0) ? 'No' : 'Yes';
$row['sex'] = ($row['sex'] == 0) ? 'Male' : 'Female';
$myArray[] = $row;

【讨论】:

  • 我得到了这个工作。即使我在数据集中有三个可能的值,我可以使用它吗? 0=男性,1=女性,2=未知?
  • 对于更具可读性的代码,如果您有超过 2 个可能的值,我会按照其他答案中的建议使用 if/else 构造或开关进行测试
【解决方案2】:

你可以在while里面使用switch语句来实现这个,见下文:-

$myArray = array();
if ($result = $mysqli->query("SELECT * FROM fish")) {

    while($rows = $result->fetch_array(MYSQL_ASSOC)) {
        if(is_array($rows)){
            foreach($rows as $row => $value)
            switch(strtolower(trim($row))){
                case 'released':
                    $myArray[] = ($value == 1) ? 'Yes' : 'No';
                    break;
                case 'sex':
                    $myArray[] = ($value == 1) ? 'female' : 'male';
                    break;
                default: 
                    $myArray[] = $value;
                    break;

            }
        }

    }
    echo json_encode($myArray);
}

【讨论】:

  • 我明白了:trim() 期望参数 1 是字符串
猜你喜欢
  • 2020-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-19
  • 1970-01-01
  • 1970-01-01
  • 2014-05-09
相关资源
最近更新 更多