2015-06-07 59 views
-1

我有一个来自mysqli查询的JSON数组,我需要在它传递给Datatables之前更改其中的一些值。如何更改json数组中的值

“已发布”:0应打印“否”,如果值为1,则为“是”。 “性别”:1为女性,“性别”为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); 
} 
+0

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

回答

0

实际上,你从一个PHP数组你的mysqli查询。所以你应该能够在将它们分配给$ myArray之前改变$ row的值。

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

我得到这个工作。即使我在数据集中有三个可能的值,我也可以使用它吗? 0 =男性,1 =女性,2 =未知? –

+0

以获取更多可读代码,如果您有超过2个可能的值,那么我会按照其他答案中的建议,使用if/else结构或开关进行测试 –

0

您可以使用,而里面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); 
} 
+0

我得到这个:trim()期望参数1是字符串 –

+0

是的,现在修复,看我更新的答案 –