2014-10-30 72 views
0

我使用下面的代碼來打印我的數組:如何從數組中將值提取到變量中?

//SQL Query 
$query = "SELECT wp_arf_entry_values.entry_value, wp_arf_entry_values.id FROM wp_arf_entry_values WHERE entry_id=1"; 

//Execute the SQL query and return records 
$result = mysql_query($query); 

while($row = mysql_fetch_assoc($result)){ 
    $results[] = $row; 
} 

//Print array in human readable form 
print("<pre>".print_r($results,true)."</pre>"); 

這是輸出:

Array 
(
    [0] => Array 
     (
      [entry_value] => John 
      [id] => 1 
     ) 

    [1] => Array 
     (
      [entry_value] => Doe 
      [id] => 2 
     ) 

    [2] => Array 
     (
      [entry_value] => 19 
      [id] => 3 
     ) 

    [3] => Array 
     (
      [entry_value] => Male 
      [id] => 4 
     ) 
) 

我有一個很難弄清楚如何可以提取數組的價值觀到變量,像這樣的(不是實際的代碼,只是一個例子):

$fName = 'entry_value' that has ID = 1 
$lName = 'entry_value' that has ID = 2 
$age = 'entry_value' that has ID = 3 
$genre = 'entry_value' that has ID = 4 

我在這裏研究了幾個小時,但我無法找到答案,可以幫助我。什麼是可行的方法來做到這一點?

+0

給出爲什麼在循環時不保存?值將是相同的每一個數據? – 2014-10-30 06:35:44

+0

什麼用戶php版本? – alu 2014-10-30 06:37:25

+2

首先不要使用它已折舊的'mysql_ *',它最好使用mysqli或pdo。其次,你如何映射ID = 1是爲fName和其他類似的。 – turtle 2014-10-30 06:38:41

回答

3

假設:ID值在你的數據庫

變化是唯一的代碼,以

$results = array(); 
while($row = mysql_fetch_assoc($result)){ 
    $results[$row['id']] = $row['entry_value']; 
} 

//Print array in human readable form 
print("<pre>".print_r($results,true)."</pre>"); 

而且你可以有你的價值觀是:

$fName = $results['1'] 
$lName = $results['2'] 
$age = $results['3'] 
$genre = $results['4'] 
+0

這工作正是我需要的。謝謝。我無法指定最佳答案。 – viniciusmunich 2014-10-30 06:43:33

+0

當您獲得該特權時,請接受它 – Puneet 2014-10-30 06:46:38

1
<?php 
// set dummy data 
$data = [ 
    ['entry_value' => 'John', 'id' => 1], 
    ['entry_value' => 'Doe', 'id' => 2], 
    ['entry_value' => '19', 'id' => 3], 
    ['entry_value' => 'Male', 'id' => 4], 
]; 

$data = array_column($data, 'entry_value', 'id'); 
$fName = $data[1]; 
$lName = $data[2]; 
$age = $data[3]; 
$genre = $data[4]; 
0

這不是最優雅的解決方案,但作品:

foreach($results as $result){ 
    switch ($result['id']){ 
     case 1: 
      $fname = $result['entry_value']; 
      break; 

     case 2: 
      $lName = $result['entry_value']; 
      break; 

     case 3: 
      $age = $result['entry_value']; 
      break; 
     case 4: 
      $genre = $result['entry_value']; 
      break; 
    } 
    echo "fname = $fname | lName = $lName | age = $age | genre = $genre\n" ; 
} 

這樣,結果順序沒有關係......所以,$結果數組沒有按照正確的順序出現,它仍然可以工作。

0

你必須通過循環得到它,代碼如下

$fName = $lName = $age = $genre = ""; 
foreach($results AS $result){ 
switch($result['id']){ 
case 1: 
$fName = $result['entry_value']; 
break; 
case 2: 
$lName = $result['entry_value']; 
break; 
case 3: 
$age = $result['entry_value']; 
break; 
case 4: 
$genre = $result['entry_value']; 
break; 
} 
} 
echo $fName." ".$lName." is ".$genre." and ".$age."years old.";