数组搜索方法Php

时间:2014-06-19 15:05:57

标签: php arrays

$contacts = array(
    array("name"=>"Samatha Perera", "Email"=>"smatha@gmail.com", "Telephone"=>array("office"=>"0112233789","personal"=>"0718256385","home"=>"0112843425")), 
    array( "name"=>"Charith Fernando", "Email"=>"charith@gmail.com", "Telephone"=>array("office"=> "0112656457","personal"=>"0718456723","home"=>"0112334466"))
);

从这个阵列我需要通过HTML表格按名称,电子邮件,电话号码进行搜索。我已经完成了表单和搜索编码部分,但它没有工作。

搜索代码:

if(isset($_POST['submit'])){

        function search_name($id, $array){
            foreach($array as $key => $val){
                while($val['name'] === $name){
                    echo "<td>".$array['id']."</td>";
                }
            }
            return "wrong";
        }   
        $name = $_POST['val-box'];
        $id= search_name($name,$contacts);
    }

3 个答案:

答案 0 :(得分:0)

$ name作为$ id参数发送给函数 我想你的意思是:

while($val['name'] === $name){

while($val['name'] === $id){

答案 1 :(得分:0)

这是你正在寻找的吗? (你有一些小的错别字和错误。)(我从代码中删除了帖子以在本地测试它,但你可以轻松地再次添加该代码。)

$contacts = array(
    array("name"=>"Samatha Perera", "Email"=>"smatha@gmail.com", "Telephone"=>array("office"=>"0112233789","personal"=>"0718256385","home"=>"0112843425")), 
    array( "name"=>"Charith Fernando", "Email"=>"charith@gmail.com", "Telephone"=>array("office"=> "0112656457","personal"=>"0718456723","home"=>"0112334466"))
);
function search_name($id, $array){
    foreach($array as $key => $val){
        if($val['name'] == $id){
            echo "<td>".$val['name']."</td>" .
                 "<td>".$val['Email']."</td>" .
                 "<td>".$val['Telephone']['office'] . "</td>" .
                 "<td>".$val['Telephone']['personal'] . "</td>" .
                 "<td>".$val['Telephone']['home'] . "</td>";
        }
    }
    echo "wrong";
}


$name = 'Samatha Perera';
$id= search_name($name,$contacts);

答案 2 :(得分:0)

$contact = array(
            array("name"=>"Samantha Perera",
                  "email"=>"samantha@gmail.com",
                  "telephone"=>
                                array("office"=>"0112233789",
                                      "personal"=>"0718256385",
                                       "home"=>"0112843425")),
            array("name"=>"Charith Fernando",
                  "email"=>"charith@gmail.com",
                  "telephone"=>
                                array("office"=>"0112656457",
                                      "personal"=>"0718456723",
                                       "home"=>"0112334466")),
            array("name"=>"Malith Wijekoon",
                  "email"=>"malith@hotmail.com",
                  "telephone"=>
                                array("office"=>"0332301311",
                                      "personal"=>"077456453",
                                      "home"=>"0112556677")),
            array("name"=>"Sanath Perera",
                  "email"=>"sanath@yahoo.com",
                  "telephone"=>
                                array("office"=>"0112201654",
                                      "personal"=>"0757277365",
                                      "home"=>"0312867725")),
            array("name"=>"Gihnan Indran",
                  "email"=>"gihan@gmail.com",
                  "telephone"=>
                                array("office"=>"032222526",
                                      "personal"=>"0778856385",
                                      "home"=>"0322243426")),
            );



     function searchValue($type, $value, $array) {
           foreach ($array as $key => $val) {
    //echo $val[$type]. "=== ".$value."<br/>";
    if($type != 'tp'){
       if ($val[$type] === $value) {
           return $key;
       }
    }else{

if ($val['telephone']['office'] === $value || $val['telephone']['personal'] === $value || $val['telephone']['home'] === $value) {
           return $key;
       }
    }
      }
          return null;
     }


       if(isset($_POST['btn_search'])){
$text = isset($_POST['search_val'])?$_POST['search_val']:null;
$type = isset($_POST['search'])?$_POST['search']:null;
$result =  searchValue($type,$text, $contact);

$data ='';
$data .= "<table class=\"resl\" width=\"800px\"><tr><td>Name</td><td>Email</td>                                 <td>Telephone</td></tr>";
$data  .= "<tr><td valign=\"top\">".$contact[$result]['name']."</td><td valign=\"top\">".$contact[$result]['email']."</td><td>Office :".$contact[$result]['telephone']['office']."</br>Personal :".$contact[$result]['telephone']['personal']."</br>Home :".$contact[$result]['telephone']['home']."</td></tr>";
$data  .= "</table>";

   }

这是html部分。

<body>
<form name="form1" action="<?php $_SERVER['PHP_SELF']?>" method="POST">
        Search Contacts
       <table>
   <tr>
<td>Search By</td>
<td colspan="2"><select name="search">
             <option value="name" <?php echo(isset($_POST['search'])&&($_POST['search']=="name")?"selected":null); ?>>Name</option>
            <option value="email" <?php echo(isset($_POST['search'])&&($_POST['search']=="email")?"selected":null); ?>>Email</option>
            <option value="tp" <?php echo(isset($_POST['search'])&&($_POST['search']=="tp")?"selected":null); ?>>Telephone</option>
    </select>
</td>
 </tr>
            <tr>
    <td>Search Value</td>
  <td><input type="text" name="search_val" id="search_val" value="<?php echo        (isset($_POST['search_val'])?$_POST['search_val']:null) ?>"></td>
     <td><button type="submit" name="btn_search">Search</button>
        </tr>   
         </table>   
       <?php
          if(isset($data )){echo $data ;}
        ?>

    </form>
   </body>