我正在尝试从PHP回显一个数组到我的javascript应用程序,并根据它的匹配更改键的值。
$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,angular $ 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 :(得分: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[$value]
替换$key
,您的代码也会有效,但如果您只需要一个特定的密钥,那么使用foreach循环会很浪费。
答案 1 :(得分:-1)
代码应该正常工作,这里唯一缺少的是,如果你没有传递值作为引用(&),那么目前你不能在结果数组中进行更改。你也可以分组
foreach ($result as $key => &$value) {
}