-1

私の質問は、変数をループするときに配列値を変数に貼り付ける方法です。

これを使用して配列を取得しています - クエリから 2 つの値が必要です。

$categ = array();   
while ($row = mysql_fetch_array($result)) {
    array_push($categ, array(
        'cat' => $row["CategoryName"],
        'course' => $row["Course"]
    ));
}

ここには重複があるため、次を使用して一意の配列を取得します。

$categ = array_map("unserialize", array_unique(array_map("serialize", $categ)));

これにより、次の出力が得られます。

Array (
  [0] => Array ( [cat] => Dogs [course] => Kempton Park )
  [2] => Array ( [cat] => Dogs [course] => Lingfield Park )
  [4] => Array ( [cat] => Gallops [course] => Wincanton )
) 

$cat次に、この配列をループして、[cat] と [course] の値を 2 つの変数に割り当てます。$course

私はあらゆる種類のものを試しましたが、うまくいきません: 以下は構文エラーになります - 理由がわかりません??

foreach ($categ as list($cat2, $course2)){
    require ('C04_by_Account_by_Bet.php');
};
4

3 に答える 3

0

これを行うこともできます:

$categ = array();   
while ($row = mysql_fetch_array($result)) {
    $categ[$row["CategoryName"]][] = $row["Course"];
}

配列は

Array (
  [Dogs] => Array ( Kempton Park, Lingfield Park ),
  [Gallops] => Array ( Wincanton )
) 

次に、次のことができます。

foreach($categ as $category => $courses) {
   $courses = array_unique($courses);
   foreach($courses as $course) {
      echo $category . ' : ' . $course; //or any other action
   }
}
于 2013-03-15T19:07:36.190 に答える
0

list()などでは使えませんforeach。次のようにする必要があります。

foreach ($categ as $value){
    list($cat2, $course2) = $value;
}

編集:PHP 5.5+で行うことができますforeach ($categ as list($cat2, $course2)){

于 2013-03-15T18:37:39.460 に答える
0
$categ = array();   
while ($row = mysql_fetch_array($result)) {
    $obj = new stdClass();
    $obj->cat = $row["CategoryName"];
    $obj->course = $row["Course"];
    $categ[] = $obj;
}

foreach($categ as $thing)
{
    $thing->cat;
    $thing->course;
}

このようなものをお勧めします。

編集:またはさらに良い

$categ = array();   
while ($obj = mysql_fetch_object($result)) {
    $categ[] = $obj;
}

foreach($categ as $thing)
{
    $thing->cat;
    $thing->course;
}
于 2013-03-15T18:52:11.853 に答える