問題はかなり単純ですが、完全に説明するのは困難です。データベースからデータ「url」と「section」を取得しています。「セクション」の値は整数です。このデータをすべて別の配列にプルして、別のページに表示します。(これはサイトマップジェネレーターです)
<?php
$query = "SELECT url, section FROM table WHERE section <= 3";
$result = db_query($query, $dbh);
$dynamic_urls = array();
while ($row = db_fetch_array($result))
{
$dynamic_urls[] = "http://example.com/" . checkSection() . $row['url'];
}
function checkSection(){
if ($row['section'] == 1)
{
return "web/";
}
elseif ($row['section'] == 2)
{
return "email/";
}
elseif ($row['section'] == 3){
return "print/";
}
return "FAILED/";
}
?>
問題は、図のように checkSection() メソッドで配列値 $row['section'] を整数 (1, 2, 3) と比較する際に問題があることだと思います。出力ファイルは、配列 $dynamic_urls をループしてページに出力するだけです。出力例を次に示します。
http://example.com/FAILED/example_permalink1
http://example.com/FAILED/example_permalink2
http://example.com/FAILED/example_permalink3
http://example.com/FAILED/example_permalink4
これらの「FAILED」出力を、探している関連する「web/」、「email/」、または「print/」タイトルにする必要があります。
if ステートメントで $row['section_id'] を整数と比較できないのはなぜですか?