2016-03-04 153 views
0

我試圖從PHP回顯一個數組到我的JavaScript應用程序,並根據它的匹配更改一個鍵的值。在關聯數組中替換值PHP

$stmt = $con->prepare($sql); 
$stmt->execute(); 
$result = $stmt->fetchAll(PDO::FETCH_ASSOC); 
foreach($result as $key => $value) { 
    if ($key == 'Service' && $value == '1') 
     $result[$key[$value]] = 'Dinner'; 
    if ($key == 'Service' && $value == '2') 
     $result[$key[$value]] = 'Lunch'; 
    if ($key == 'Service' && $value == '3') 
     $result[$key[$value]] = 'Breakfast'; 
} 

基本上是一個數據庫具有對應於某些服務數字條目,我試圖改變號碼,以反映實際的服務,但沒有我試過到目前爲止工作。

我唯一確定的是上面的代碼是錯誤的,令人難以置信的醜陋。有沒有一個PHP函數可以完成我想要的功能?

另一方面,它可能更容易改變JavaScript方面的值,但我還沒有能夠做到這一點。

使用AJAX,角$ HTTP方法我

.then(function (response) { 
    console.log(response); 
    $scope.userData = {}; 
    $scope.userData = response.data; 

我已經試過了變化,像這樣的response.data檢索數據;

if (response.data.services == '1') { 
    response.data.services = 'Dinner'; 
} 

但這不起作用。

也試過

if ($scope.userData.services == '1') { 
    $scope.userData.services == 'Dinner'; 
} 

不工作,但我懷疑,即使它不會改變response.data.services的所有值正確地顯示哪些服務被稱爲。

+0

'$ ar =('','Dinner','Lunch','Breakfast'); ... if($ key =='Service')$ result [$ key] = $ ar [$ value];' – splash58

+0

@ splash58 - 無法正常工作:( – HenrikM

回答

1

您可以使用映射/查找目的數組:

// One-time definition 
$services = ['1' => 'Dinner', '2' => 'Lunch', '3' => 'Breakfast']; 
// Your code... 
$stmt = $con->prepare($sql); 
$stmt->execute(); 
$result = $stmt->fetchAll(PDO::FETCH_ASSOC); 
foreach($result as &$row) 
{ 
    // If the key is set and is mapped in $services 
    if(isset($row['Service']) && isset($services[$row['Service']])) 
    { 
     // Then replace it 
     $row['Service'] = $services[$row['Service']]; 
    } 
} 

我認爲,如果你只用$key替換$key[$value]你的代碼也將工作,但它是一種浪費使用foreach循環,如果你只需要無論如何,一個單一的,特定的密鑰

+0

我嘗試使用$ key代替並且沒有任何更改。你的代碼看起來當然更清晰了,問題是結果可能是幾行,每行有不同的$ services。 – HenrikM

+0

@HenrikM對,那是'fetchAll',我的不好,添加了一個圍繞if的foreach循環。 – Siguza

-1

代碼應該正常工作,這裏唯一缺少的是如果你不通過值作爲參考(&),所以目前你不能在結果數組中進行更改。你也可以分組一點

foreach ($result as $key => &$value) { 

} 
+0

如果你直接賦值,只需要'$ value'作爲引用,如果你使用'$ result [$ key]',那就不需要了,而且OP的代碼也不能正常工作,因爲它們使用'$ key [$ value]'而不是'$ key'。 – Siguza

+0

我試過了你的版本@slim kallari,但沒有雪茄。 – HenrikM