2017-03-13 2 views
1

をオブジェクトに変換されるダミーの例である:PHPのarray_uniqueはここ

$errors = []; 
for ($i = 0; $i < 3; $i++) { 
    $errors[] = [ 
     'id' => $i 
    ]; 
} 

$errors[] = [ 
    'id' => 0 
]; 

for ($i = 3; $i < 5; $i++) { 
    $errors[] = [ 
     'id' => $i 
    ]; 
} 


var_dump($errors); 
echo "<br/>"; 
var_dump(array_unique($errors, SORT_REGULAR)); 

上記の出力は次のようになります。

array(6) { 
    [0]=> array(1) { ["id"]=> int(0) } 
    [1]=> array(1) { ["id"]=> int(1) } 
    [2]=> array(1) { ["id"]=> int(2) } 
    [3]=> array(1) { ["id"]=> int(0) } 
    [4]=> array(1) { ["id"]=> int(3) } 
    [5]=> array(1) { ["id"]=> int(4) } 
} 

array(5) { 
    [0]=> array(1) { ["id"]=> int(0) } 
    [1]=> array(1) { ["id"]=> int(1) } 
    [2]=> array(1) { ["id"]=> int(2) } 
    [4]=> array(1) { ["id"]=> int(3) } 
    [5]=> array(1) { ["id"]=> int(4) } 
} 

あなたは、第二のケースを見ることができるように、インデックス3がありません。だから私はAPIを介してこれを返すと、0,1,2,4,5のキーを持つオブジェクトとして返されます。

+1

'array_unique()' ** **オブジェクトにあなたの配列を変換しません。 – Xorifelse

+0

それをオブジェクトに変換せず、関連する配列に変換します –

+0

さて、この項目をAPIインターフェイスで返します.Javascriptはオブジェクトとしてオブジェクトを受け取ります。 – Kousha

答えて

1

関数array_unique()は等しい値をフィルタリングするので、インデックスの#3が欠落している理由は#0と等しいためです。

あなたは、インデックスを再することができますarray_values()を持つ配列:それだけ数値キー配列を理解しているため

var_dump(array_values(array_unique($errors, SORT_REGULAR))); 

JavaScriptがPHPの連想配列のオブジェクトとしてを知覚します。両方の言語間の通信にを使用しなければならない

このよう

echo json_encode($errors); 

値が配列になって、オブジェクトに各項目をオンにする外側に引き起こします。

var arr = JSON.parse(outputofjson_encode); 

console.log(arr[0].id); 
0

私はarray_valuesを使用して終了:

$errors = []; 
for ($i = 0; $i < 3; $i++) { 
    $errors[] = [ 
     'id' => $i 
    ]; 
} 

$errors[] = [ 
    'id' => 0 
]; 

for ($i = 3; $i < 5; $i++) { 
    $errors[] = [ 
     'id' => $i 
    ]; 
} 

$errors = array_values(array_unique($errors, SORT_REGULAR)); 
+1

あなたの回答が表示されませんでした。私はあなたのことを解決策としてマークしました – Kousha