PHP数组JSON
问题描述:
我使用的是angularJS控制器这样PHP数组JSON
app.controller('customersCtrl', function($scope, $http) {
$scope.element = function(num){
var element_id = num;//num;
$http.get("customers.php",{params:{"id":element_id}}).then(function (response) {
$scope.myData = response.data;
}
,function errorCallback(response){
$scope.e=response.statustext;
console.log(e);
});
};
});
这是我的PHP阵列
$id = $_GET[id];
$customer_array = array();
$customer1 = array(
'name' => 'LoneStar',
'city' => 'Houston'
);
$customer_array[] = $customer1;
$customer2 = array(
'name' => 'SNHU',
'city' => 'Manchester'
);
$customer_array[] = $customer2;
$customer3 = array(
'name' => "Regis",
'city' => "Boulder"
);
客户1阵列,我怎么能只返回的只是城市名那一个元素。
答
您可以使用php的json_encode()
函数完成此操作。
$id = $_GET[id];// Assuming this is the customer's name. If not???
$customer_array = array();
$customer1 = array(
'name' => 'LoneStar',
'city' => 'Houston'
);
$customer_array[] = $customer1;
$customer2 = array(
'name' => 'SNHU',
'city' => 'Manchester'
);
$customer_array[] = $customer2;
$customer3 = array(
'name' => "Regis",
'city' => "Boulder"
);
$customer_rquired = array();
// Traverse the array to find the customer data
foreach($customer_array as $key=>$customer_instance){
if($customer_instance["name"] === $id){
$customer_required["customer"] = $customer_instance;
echo json_encode($customer_required);
break;
}
}
//What you'd do if no customer is found?
这呼应了可以在你的AngularJS脚本response.data
访问。在那里,您将拥有一个包含客户实例的JSON对象。 但恕我直言,你的数据结构存储客户信息不是很好。如果有两个客户同名怎么办?
答
如果$id
包含元素在customer_array
的INDEX,它会像
header("Content-type:application/json; charset=UTF-8");
echo json_decode($customer_array[$id]["city"]);
如果$id
包含在customer_array
NAME元素,它会像
$customer = array();
$response = array();
foreach ($customer_array as $customer_element) {
if ($id == $customer_element["name"]) {
$customer = $customer_element;
}
}
if (count($customer)) {
$response = array("city" => $customer["city"]);
}else{
$response = array("error" => "element not found")
}
header("Content-type:application/json; charset=UTF-8");
echo json_decode($response);
答
$id = $_GET[id]; // $id = 0 to get the value from the first array
$customer_array = array();
$customer1 = array(
'name' => 'LoneStar',
'city' => 'Houston'
);
$customer_array[] = $customer1;
$customer2 = array(
'name' => 'SNHU',
'city' => 'Manchester'
);
$customer_array[] = $customer2;
$customer3 = array(
'name' => "Regis",
'city' => "Boulder"
);
echo $customer_array[$id]['city']; //the city value of the first array
答
“为客户1阵列我怎么才能返回只有一个元素的城市名称“
您的代码:
$customer_array = array();
$customer1 = array(
'name' => 'LoneStar',
'city' => 'Houston'
);
$customer_array[] = $customer1;
$customer2 = array(
'name' => 'SNHU',
'city' => 'Manchester'
);
$customer_array[] = $customer2;
$customer3 = array(
'name' => "Regis",
'city' => "Boulder"
);
以上代码使得$ customer_array
存在三个顾客的:
$customer_array = array(
array(//First item in array $customer_array
'name' => 'LoneStar',
'city' => 'Houston'
),
array(//Second item in array $customer_array
'name' => 'SNHU',
'city' => 'Manchester'
),
array(//Third item in array $customer_array
'name' => "Regis",
'city' => "Boulder"
)
);
如果数组没有定义键,在0和向上计数开始,例如。 0,1,2.3 ... 为此$customer_array[0]
包含数组:
array(//First item in array $customer_array
'name' => 'LoneStar',
'city' => 'Houston'
)
$customers_array[1]
包含数组:
array(//Second item in array $customer_array
'name' => 'SNHU',
'city' => 'Manchester'
)
和$customers_array[2]
包含数组:
array(//Third item in array $customer_array
'name' => "Regis",
'city' => "Boulder"
)
我怎样才能返回这一个元素的城市名称?
例子:
$customers[0]['city'] would return value "Houston"
$customers[1]['city'] would return value "Manchester"
$customers[2]['city'] would return value "Boulder"
你为什么要使用许多阵列,而不是使用一个单一的阵列,并尝试应用过滤条件并返回该对象单独 – Aravind
回声json_encode($ customer_array);并得到回应 – JYoThI
echo $ customer_array [0] ['city']; – JYoThI