2

以下は、一意/マージしようとしている配列とコードです

$data['default_new'] = array_unique(array_merge($data['default'], $data['related']))



Array
(
    [0] => Array
        (
            [keywords_id] => 8
            [keyword] => Curling
            [parent_id] => 5
            [count] => 0
        )

)
Array
(
    [0] => Array
        (
            [keywords_id] => 8
            [keyword] => Curling
            [parent_id] => 5
            [count] => 0
        )

    [1] => Array
        (
            [keywords_id] => 10
            [keyword] => Catchers
            [parent_id] => 6
            [count] => 0
        )

    [2] => Array
        (
            [keywords_id] => 16
            [keyword] => CES 2013
            [parent_id] => 3
            [count] => 0
        )

)

配列から文字列へのエラーが表示されます:

A PHP Error was encountered

Severity: Notice

Message: Array to string conversion

Filename: models/content_model.php

Line Number: 29

以前にユニークとマージでこの問題が発生し、修正されたことはありません!

コードイグナイターを使用しています

array_unique/merge を使用している関数に関する詳細情報は次のとおりです。

    public function results($data, $searched)
    {
        $page['searched'] = $searched;
        $page['is_active'] = $this->logic_model->is_active();
        $data2 = array();
        $data2['default_new'] = array_unique(array_merge($data['default'], 
$data['related']));
}

29行目は$data2['default_new'] = array_u

$dataパラメータには が含まれており、上defaultregular確認できます。

データの vardump:

array(3) {
  ["active"]=>
  array(2) {
    ["id"]=>
    string(1) "5"
    ["keyword"]=>
    string(6) "Sports"
  }
  ["related"]=>
  array(1) {
    [0]=>
    array(4) {
      ["keywords_id"]=>
      string(1) "8"
      ["keyword"]=>
      string(7) "Curling"
      ["parent_id"]=>
      string(1) "5"
      ["count"]=>
      string(1) "0"
    }
  }
  ["default"]=>
  array(3) {
    [0]=>
    array(4) {
      ["keywords_id"]=>
      string(1) "8"
      ["keyword"]=>
      string(7) "Curling"
      ["parent_id"]=>
      string(1) "5"
      ["count"]=>
      string(1) "0"
    }
    [1]=>
    array(4) {
      ["keywords_id"]=>
      string(2) "10"
      ["keyword"]=>
      string(8) "Catchers"
      ["parent_id"]=>
      string(1) "6"
      ["count"]=>
      string(1) "0"
    }
    [2]=>
    array(4) {
      ["keywords_id"]=>
      string(2) "16"
      ["keyword"]=>
      string(8) "CES 2013"
      ["parent_id"]=>
      string(1) "3"
      ["count"]=>
      string(1) "0"
    }
  }
}
4

2 に答える 2

1

エラーは、array_uniqueまたはarray_merge関数呼び出しによるものではありません。

問題は、以前 に として定義$dataしたことです。string

これで修正されるはずです:

$data = array();
$data['default_new'] = array_unique(array_merge($data['default'], $data['related']))
于 2013-05-08T19:02:38.477 に答える
1

ここの注記セクションを見てください: http://us.php.net/array_unique#refsect1-function.array-unique-notes

一意の多次元配列を作成するには、独自のアルゴリズムを考え出す必要があります。上記の私のリンクのコメントのいくつかは、これを達成するためのさまざまな方法を提案しています

<?php
$values = array();

foreach($data as $d) {
    $values[md5(serialize($d))] = $d;
}

sort($values);
?>

SO に関する関連する質問: PHP array_unique の奇妙な動作および配列の配列で array_unique を使用するにはどうすればよいですか?

于 2013-05-08T19:37:28.627 に答える