используйте
ob_start ();
blockquote>в самой верхней части вашего скрипта и
ob_end_flush ( );
blockquote>внизу вашего скрипта. Этот wil включит буферизацию вывода и ваши заголовки будут созданы после того, как страница будет bufferd.
ОБЩИЕ ПРОБЛЕМЫ:
=============== =====
(скопированный ответ из: source )
1) не должно быть никакого выхода (т.е.
echo..
или HTML-коды) перед командойheader(.......);
.2) удалите любое белое пространство (или новую строку) до
и после
?>
тегов.3) ЗОЛОТОЕ ПРАВИЛО! - проверьте, поддерживает ли этот файл php (а также, если вы
include
другие файлы) UTF8 без кодировки спецификации (а не только UTF-8). Это проблема во многих случаях (потому что кодированный файл UTF8 имеет что-то особенное в начале файла php, которое ваш текстовый редактор не показывает) !!!!!!!!!!!4) После
header(...);
вы должны использоватьexit;
5) всегда используйте ссылку 301 или 302:
header("location: http://example.com", true, 301 ); exit;
6) Включить ошибку составление отчетов. И сообщать об ошибке.
7) Если ни одно из вышеизложенных не помогает, используйте перенаправление JAVSCRIPT (однако, сильно не рекомендуемый метод), может быть последним шансом в пользовательских случаях ...:
echo ""; exit;
Я использовал $priceResult
как массив, содержащий объекты категорий. Я думаю, это выглядело бы примерно так:
$priceResult = array()
foreach($pricing->categories as $category){
$c = new stdClass();
$c->CategoryCode = $category->categoryCode;
$c->CategoryDescription = $category->category_description;
$c->Products = array();
foreach($category->products as $product){
$p = new stdClass();
$p->ProductCode = null; // $product->something? no idea where this is
$p->CountNumber = $product->productInfo->product->product_type->quantDetails;
$p->ProductDescription = $product->productInfo->product->product_type->desc;
$p->PriceAmount = $product->pricing->MainPrice;
$c->Products[] = $p;
}
$priceResult[] = $c;
}
Я должен сказать, что исходные данные, похоже, имеют очень странную структуру.
Попробуйте это:
$categoryArray = [];
foreach($pricing->categories as $category) {
$categoryResult['categoryCode'] = $category->categoryCode;
$categoryResult['CategoryDescription'] = $category->category_description;
$categoryResult['Products'] = [];
foreach($category->products as $product) {
$productResult['Product_code'] = ''; // this doesn't appear in your JSON...
$productResult['CountNumber'] = $product->productInfo->productType->quantDetails;
$productResult['ProductDescription'] = $product->productInfo->productType->desc;
$productResult['price_amount'] = $product->pricing->MainPrice;
$categoryResult['Products'][] = $productResult;
}
$categoryArray[] = $categoryResult;
}
$priceResult = $categoryArray; // ($priceResult is a strange name for this array...)
$product->pricing
и $product->productInfo
являются отдельными объектами, а не массивами объектов. Если вы хотите зациклить свойства объекта, вы можете использовать get_object_vars()
для возврата ассоциативного массива.
foreach($pricing->categories as $category){
$priceResult[] = $category->categoryCode;
$priceResult[] = $category->category_description;
foreach($category->products as $product){
foreach (get_object_vars($product->pricing) as $amount) {
$priceResult[] = $amount;
}
foreach (get_object_vars($product->productInfo) as $info) {
$priceResult[] = $info->desc;
$priceResult[] = $info->quantDetails;
}
}
}