0

if ステートメントを使用して 2 つの配列の値を比較しようとしています。インデックスを比較していません。値が互いに一致する場合、多次元配列から値を出力したいと思います。のソリューションを使用しようとしました:

  1. 2 つの配列を比較し、次のループのために一致する要素を 1 つから削除する方法は?

  2. 多次元配列の配列値

  3. 多次元配列からの Array_values

ただし、これらの例は私の問題に完全には答えていません。新しい配列を作成する必要はありません。値をループして、一致する値があれば画面に値をエコーし​​ます。

以下のコードを参照してください。問題は「/////////////////////////」マークの下にあります。

<?php


$str ="";


// events array
$events = array( array("PokeMon", "Hall D" , "1:00 AM"),
                 array("Sonic the Hedgehog", "WorkShop 1" , "11:00 AM"),
                 array("Tasbura", "Video 3" , "2:00 PM"),
                 array("Sailor Moon ", "Panel 4" , "6:00 PM") 
               );

// location array
$row=array(
"Arena","Hall D","Video 1","Video 2","Video 3","Video 4","Video 5","Video 6","HD Theater",
"Panel 1","Panel 2","Panel 3","Panel 4","WorkShop 1","WorkShop 2","WorkShop 3","WorkShop 4",
"Autograph 1","Autograph 2"
 );

// event start time array
$col=array(
"","9:00 AM","10:00 AM","11:00 AM","1:00 PM","2:00 PM","3:00 PM","4:00 PM","5:00 PM","6:00 PM",
"7:00 PM","8:00 PM","9:00 PM","10:00 PM","11:00 PM","12:00 AM","1:00 AM","2:00 AM",
 );

// length of  location and start time arrays 
$rowLength=count($row);
$colLength=count($col);


$str .= "<table><tr><td bgcolor='green'><table border='1' bordercolor='black'><tr>";

for($i = 0; $i < $colLength; $i++){
   $str .= "<td width='100' height='25'  bgcolor='yellow'>";
   $str .= $col[$i];
   $str .= "</td>";


}


   for ($j = 0; $j < $rowLength; $j++){
    $str .= "<tr><td width='100' height='25' bgcolor='pink'>";
    $str .= $row[$j];
    $str .= "</td> ";


        for ($k = 0; $k < $colLength-1; $k++){

            $str .= "<td width='100' height='25'  bgcolor=' #70DBDB'>";



//////////////////////Here is where I need to compare the arrays:

            if( ($row[$j]==$events[$j][1]) && ($col[$k+1]==$events[$k+1][2])){

                $str .= $events [$j][0];
///////////////////////////////////////////////////////////////////     


            }else{

            $str .= " ";

            } 

            $str .= "</td>";

        }

        $str .= " </tr>";

    }

 echo $str ."</table></td></tr></table>";

?>

これは私が作成しようとしているものの例です: http://leobee.com/android/push/so/stdt2.php

例のコードは次のとおりです。

<?php
// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL ^ E_NOTICE);

// Report all PHP errors (see changelog)
error_reporting(E_ALL);

// Report all PHP errors
error_reporting(-1);

// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

$str ="";
$row=array(
'Arena',"Hall D","Video 1","Video 2","Video 3","Video 4","Video 5","Video 6","HD Theater",
"Panel 1","Panel 2","Panel 3","Panel 4","WorkShop 1","WorkShop 2","WorkShop 3","WorkShop 4",
"Autograph 1","Autograph 2"
 );

$col=array(
"","9:00 AM","10:00 AM","11:00 AM","1:00 PM","2:00 PM","3:00 PM","4:00 PM","5:00 PM","6:00 PM",
"7:00 PM","8:00 PM","9:00 PM","10:00 PM","11:00 PM","12:00 AM","1:00 AM","2:00 AM",
 );


$rowLength=count($row);
$colLength=count($col);
//echo $rowLength." ".$colLength."<br>";

$str .= "<table><tr><td bgcolor='green'><table border='1' bordercolor='black'><tr>";

for($i = 0; $i < $colLength; $i++){
   $str .= "<td width='100' height='25'  bgcolor='yellow'>";
   $str .= $col[$i];
   $str .= "</td>";



}



   for ($j = 0; $j < $rowLength; $j++){
   $str .= "<tr><td width='100' height='25' bgcolor='pink'>";
   $str .= $row[$j];


   $str .= "</td> ";


    for ($k = 0; $k < $colLength-1; $k++){
   $str .= "<td width='100' height='25'  bgcolor=' #70DBDB'>";
////////////////////////////////////////////////////////////////////////////    
        if( ($row[$j]=="Arena") && ($col[$k+1]=="9:00 AM")){

             $str .= "Poketmon";

        }else{
            $str .= "";
        }

 ///////////////////////////////////////////////////////////////////////////
   $str .= "</td>";

    }

   $str .= " </tr>";

}

 echo $str ."</table></td></tr></table>";

?>
4

1 に答える 1

1

私はあなたのコードで遊んでいて、次の解決策にたどり着きました。あなたがそれを気に入って理解してくれることを願っています:

<?php

// events array
$events = array(
    array('PokeMon', 'Hall D' , '1:00 AM'),
    array('Sonic the Hedgehog', 'WorkShop 1' , '11:00 AM'),
    array('Tasbura', 'Video 3' , '2:00 PM'),
    array('Sailor Moon ', 'Panel 4' , '6:00 PM') 
);

$events_flat = array();

foreach($events as $event)
{
    $events_flat[$event[0]] = $event[1] . $event[2];
}

// location array
$locations = array(
    'Arena', 'Hall D', 'Video 1', 'Video 2', 'Video 3',
    'Video 4', 'Video 5', 'Video 6', 'HD Theater', 'Panel 1', 
    'Panel 2', 'Panel 3', 'Panel 4', 'WorkShop 1', 'WorkShop 2',
    'WorkShop 3', 'WorkShop 4', 'Autograph 1', 'Autograph 2'
);

// event start time array
$times = array(
    '9:00 AM', '10:00 AM', '11:00 AM', '1:00 PM', '2:00 PM',
    '3:00 PM', '4:00 PM', '5:00 PM', '6:00 PM', '7:00 PM',
    '8:00 PM', '9:00 PM', '10:00 PM', '11:00 PM', '12:00 AM',
    '1:00 AM', '2:00 AM'
);

$html = '<table><tr><td bgcolor="green"><table border="1" bordercolor="black"><tr><td></td>';

foreach ($times as $time)
{
    $html .= '<td width="100" height="25" bgcolor="yellow">';
    $html .= htmlspecialchars($time);
    $html .= '</td>';
}

foreach ($locations as $location)
{
    $html .= '<tr><td width="100" height="25" bgcolor="pink">';
    $html .= htmlspecialchars($location);
    $html .= '</td>';

    foreach ($times as $time)
    {
        $html .= '<td width="100" height="25" bgcolor="#70DBDB">';

        $event = array_search($location . $time, $events_flat);

        if ($event === FALSE)
        {
            $html .= ' ';
        }
        else
        {
            $html .= htmlspecialchars($event);
        }

        $html .= '</td>';
    }

    $html .= ' </tr>';
}

$html .=  '</table></td></tr></table>';

echo $html;

?>
于 2012-07-06T11:42:14.393 に答える