2017-08-28 57 views
0

我有一個數組(myArray的),它看起來像PHP for循環分配變量在陣列

Array(
    [0] => Computer 
    [1] => House 
    [2] => Phone 
) 

我試圖動態地設置每個值的數目例如

$newValues = [ 

    "computer" => 0, 
    "House" => 1, 
    "Phone" => 2, 
]; 

我有以下環

$y = 0; 
for ($x = 0; $x < count($myArray); x++){ 
    $values = [ 
    $myArray[$x] = ($y+1) 
    ]; 
    y++; 


} 

此錯誤地產生

Array(
    [0] => 3 
) 
+0

可能會出現重複的值嗎? – RomanPerekhrest

+0

不,重複值已被濾除 – jumpman8947

+0

您只是每次都設置值。 $ value = – okante

回答

2

您可以使用array_flip($ arr)。 link

1

如果我好明白,要與鍵翻轉值,所以儘量使用array_flip()

如果成爲與數組一起工作,首先嚐試在PHP Array functions做一些研究。 )

1

使用array_flip()其中 - 交流與它們相關聯的值的所有的鍵陣列中的

<?php 
$a1=array("0"=>"Computer","1"=>"House","2"=>"Phone"); 
$result=array_flip($a1); 
print_r($result); 
?> 

然後輸出是:

Array 
(
    [Computer] => 0 
    [House] => 1 
    [Phone] => 2 
) 

以獲取更多信息

http://php.net/manual/en/function.array-flip.php

+0

這是怎麼做出來的動態的,數組的值會不斷變化 – jumpman8947

+0

@ jumpman8947這個函數做了這個 –

0

像其他人所說的那樣,a rray_flip將工作,但是,在你寫的代碼,您的實際問題是:

  1. 您正在使用數組鍵錯誤的賦值操作符:

$myArray[$x] = ($y+1)應該$myArray[$x] => ($y+1)

然而這種類型的分配確實沒有必要,因爲下一個問題會顯示:

  1. 您正在使用ne覆蓋每個迭代的$值w數組。

追加到$值,你可以使用:

$values[$myArray[$x]] = $y+1; 
  • 如果你真的想0作爲第一個值,不要使用Y + 1你的任務。