PHP中的array_unique()函数不适用于我的数组

时间:2017-12-08 16:28:10

标签: php mysql

我已经创建了一个聊天功能。我想从一组值中只获取一个值。我在其中使用了array_unique函数。

错误:

{
  "libs": [],
  "items": [
    {
      "id": "001",
      "cars": [
        "cd1042af-856d-4649-a170-032d15a4119b",
        "00ed61a4-3aab-4722-90c2-7f4cca4cbded",
        "8fa3aa8b-3f22-4413-a41d-e78de9051de2"
      ],
      "name": "James"
    },
    {
      "id": "002",
      "cars": [
        "cd1043af-856d-4649-a170-032d15a4119b",
        "00ed61a4-3aab-4722-90c2-7f4cca4cbded",
        "8fa3aa8b-3f22-4413-a41d-e78de9051de2"
      ],
      "name": "James"
    }
  ]
}

Error image

1 个答案:

答案 0 :(得分:0)

您正在尝试对数组进行字符串比较(非标量)。我不认为array_unique适用于数组数组,它​​必须是字符串数组。如果您需要唯一的接收器,则需要将该值转换为字符串。

我不知道您可能正在使用该数组,但一种解决方案是序列化/字符串化数组,然后您可以运行您的唯一,然后解包/淡化字符串。我不确定为什么如果该数组中只有一个值,那么你使用的是一个键。如何存储字符串,它应该适合你

EX:

function get_chat_list($sender){
      global $conn;
      $sqlCode = "SELECT DISTINCT sender FROM chat WHERE connector LIKE '%$sender%' ";
      $sqlCode1 = "SELECT DISTINCT reciever FROM chat WHERE connector LIKE '$sender%'";
      var_dump($sqlCode1);
      $run = mysqli_query($conn,$sqlCode);
      $run1 = mysqli_query($conn,$sqlCode1);
      var_dump($run1);
      $recievers = array();
      while($reciever = mysqli_fetch_assoc($run)){
          if($reciever['sender'] != $sender){
              $recievers[] = $reciever['sender'];
          }

      }

      while($reciever = mysqli_fetch_assoc($run1)){
          if($reciever['reciever'] != $sender){
            $recievers[] = $reciever['reciever'];
          }

      }

      return array_unique($recievers);
   }