2014-02-18 2 views
-3

Это array где я хочу найтиПоиск из многомерного массива

$contacts =array(
array("name"=>"Samatha Perera", "Email"=>"[email protected]", "Telephone"=>array("office"=>"0112233789","personal"=>"0718256385","home"=>"0112843425")), 
array("name"=>"Charith Fernando", "Email"=>"[email protected]", "Telephone"=>array("office"=>"0112656457","personal"=>"0718456723","home"=>"0112334466")), 
array("name"=>"Malith Wijekoon", "Email"=>"[email protected]", "Telephone"=>array("office"=>"0332301311","personal"=>"077456453","home"=>"0112556677")), 
array("name"=>"Sanath Perera", "Email"=>"[email protected]", "Telephone"=>array("office"=>"0112201654","personal"=>"0757277365","home"=>"0312867725")), 
array("name"=>"Gihan Indran", "Email"=>"[email protected]", "Telephone"=>array("office"=>"032222526","personal"=>"0778856385","home"=>"0322243426")), 
    ); 

Форма будет выглядеть следующим образом

Поиск по: Имя или Email или Телефон (Это поле со списком)

Значок поиска: _______________ (кнопка поиска)

Я хочу найти и отобразить результаты в таблице следующим образом.

----------------------------------- 
Name    | Email     | Telephone 


Samatha Perera  [email protected]   Office:0112233789 

               Personal:0718256385 

               Home:0112843425 
+2

А что вы ожидаете от нас? –

+0

кто удалил вопрос? – halfbit

+0

Я хочу найти из этого массива – user3312802

ответ

0

Попробуйте это .... ниже код будет соответствовать любому тексту ....

//$search = 'Samatha'; 
//$search = '011'; 
$search = 'Ferna'; 

$match = array(); 
?> 
<table> 
<tr> 
<td>Name</td> 
<td>Email</td> 
<td>Phone</td> 
</tr> 
<?php 
foreach($contacts as $key => $value) { 

    if(strpos($value['name'],$search) !== false || strpos($value['Email'],$search) !== false) { 
     $match[] = $value; 
     continue; 
    } 

    foreach($value['Telephone'] as $k => $v) { 
     if(strpos($v,$search) !== false) { 
      $match[] = $value; 
      break; 
     } 
    } 


} 
if(!empty($match)) 
foreach($match as $key => $value) { 
    ?> 

<tr> 
<td><?php echo $value['name']?></td> 
<td><?php echo $value['Email']?></td> 
<td><?php 
foreach($value['Telephone'] as $k => $v) { 
    echo "{$k} : {$v}<br />"; 
} 
?></td> 
</tr> 
    <?php 
} 
?></table> 
0

От того, как я это вижу, вам понадобится прокрутить каждый массив и сравнить значения.

//$search_term = 'Samatha Perera'; 
$search_term = '032222526'; 

foreach ($contacts AS $record) { 


    foreach ($record AS $key => $val) { 

     $match_found = false; 
     if ($key == 'Telephone') { 

      if (in_array($search_term, $record['Telephone'])) { 
       $match_found = true; 
      } 
     } 
     else { 
      if (preg_match('/'.$search_term.'/i', $val)) { 
       $match_found = true; 
      } 
     } 

     if ($match_found) { 

      $name_length = strlen($record['name']); 
      $email_length = strlen($record['Email']); 
      $total_pad = $name_length + $email_length + 6; 

      print "\n".$record['name'].' | '.$record['Email'].' | '.$record['Telephone']['office']."\n\n". 
                 str_pad(' ', $total_pad, ' ', STR_PAD_LEFT).$record['Telephone']['personal']."\n\n". 
                 str_pad(' ', $total_pad, ' ', STR_PAD_LEFT).$record['Telephone']['home']."\n"; 
     } 
    } 

} 
Смежные вопросы