カテゴリツリー階層全体(ebay API)を取得し、データベース(mysql)を使用せずに各カテゴリ値を出力する必要があります。私はforeachとwhileを使用していくつかのアプローチを試しましたが、スクリプトはトップカテゴリの後に、または多くても最初の子カテゴリセットの後になくなります。ここでPHP foreach/while/loop - データベースなしでカテゴリ階層全体をトラバースする方法
は私のスクリプトです:私が言うことができるものから、
set_time_limit('0');
error_reporting(E_ALL);
## get categories allow us to traverse through categories
//getcategorycall call to return the categories based on the category id
function GetCategoryInfo($id) {
$URL = "api.example.com";
$response = json_decode(file_get_contents($URL), true);
//check if the request is returned with success
$Ack = $response['Ack'];
if ($Ack !== 'Success') {
echo "error $Ack";
exit();
}
//get category array
$CategoryArray = $response['CategoryArray']['Category'];
return $CategoryArray;
}
$CategoryID_top = '-1';
$CategoryInfo = GetCategoryInfo($CategoryID);
//traverse top categories
//we need to count the categories and start from 1 due the fact the requested category(e.g. root) is included in the response
$top_count = count($CategoryInfo);
$top_i = 1;
while ($top_i <= $top_count) {
$Category = $CategoryInfo[$top_i];
# print_r($Category);
# exit();
$CategoryID = $Category['CategoryID'];
$CategoryName = $Category['CategoryName'];
$LeafCategory = $Category['LeafCategory'];
echo " Top category:: $CategoryID\n $CategoryName\n $LeafCategory\n<br>";
//traverse child categories that are not leaf until it reaches the leaf categories
if (empty($LeafCategory)) {
echo "this is not a leaf category";
$CategoryInfo = GetCategoryInfo($CategoryID);
$child_count = count($CategoryInfo);
$child_i = 1;
while ($child_i <= $child_count) {
$Category = $CategoryInfo[$child_i];
$CategoryID = $Category['CategoryID'];
$CategoryName = $Category['CategoryName'];
$LeafCategory = $Category['LeafCategory'];
echo " Child category :: $CategoryID\n $CategoryName\n $LeafCategory\n<br>";
$child_i++;
}
}
$top_i++;
}
あなたは** **コードをフォーマットしていただけますか? –
@jcinacioそれは私によく見える...それをフォーマットする方法?実際には – themihai
、しました。 –