2012-07-06 39 views
0

我试图使用if语句来比较两个数组值。我没有比较索引。如果这些值彼此匹配,那么我想从多维数组中打印出一个值。我试图用解决方案:使用条件来匹配多维数组中的值

  1. How to compare two arrays and remove matching elements from one for the next loop?

  2. array values in multidimensional array

  3. Array_values from multidimensional array

然而,这些例子并不十分回答我的问题。我不需要生成一个新的数组,我想遍历这些值,如果我有一个匹配项,则在屏幕上回显一个值。

请参阅下面我的代码,这个问题是下面的“///////////////////////////”标记:

<?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>"; 

?> 

回答

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; 

?> 
+0

这是惊人的!我没有考虑平面阵列。我不知道我可以搜索比较这样的两个数组。谢谢。 – Leoa 2012-07-06 14:43:27

+0

我有点困惑这条线'$ events_flat [$ event [0]] = $ event [1]。 $ event [2];'$ event [0]的值被重新赋值(concateated)为$ event [1]的值。 $ event [2]你如何能够在代码中将值返回:'$ event = array_search($ location。$ time,$ events_flat);'?从文档array_search产生一个索引,这不是值。对不起,我对此有点困惑。 – Leoa 2012-07-06 15:04:09