没有导致爆炸阵列的结果

时间:2017-04-05 15:20:51

标签: php

基本上我试图让我的PHP代码搜索包含Surburbs和邮政编码(3000,墨尔本)等的txt文件。用户输入一个郊区并打印出相应的邮政编码。

我认为几乎所有的方式都没有打印出来。不确定为什么。问了一些我的网络开发朋友,但他们没有帮助哈哈。 任何帮助将不胜感激.. 谢谢:))

<html>
<body>

<p>INPUT AN SUBURB NAME IN BELOW TEXT BOX AND CLICK 'SEARCH' BUTTON TO SEE 
THE RESULT.</p>

<form>
Suburb:<input type="text" name="suburb"/><input type="submit" 
value="search"/>
</form>
<?php

if(isset($_GET['suburb']))
{

//load email from file
$file = "postcode.txt";

if(!file_exists($file ))
{
    echo "No file found!";
}
else
{
    $postcodes=file($file);


    for($i=0;$i<count($postcodes);$i++)
    {
        $postcodes[$i]=str_replace("\n","",$postcodes[$i]);
        $curPostcode = explode(",", $postcodes[$i]);
        if(isset($array_postcode))
        {
            $array_postcode+=array($curPostcode[1]=>$curPostcode[0]);               
}
        else
        {
            $array_postcode=array($curPostcode[1]=>$curPostcode[0]);
        }

    }
        if(isset($array_postcode)) 
    {
        echo "nothing"
    ;}
else {

        //print_r($array_postcode);
    echo "The postcode of ".$_GET['suburb']." is : " 
.$array_postcode['suburb'];

}}


}       


?>


</body>
</html>

1 个答案:

答案 0 :(得分:0)

假设您的文件采用以下格式:

300, ABC
400, XYZ
500, DEF

你已经设定if(isset($array_postcode))的条件是真的,因此打印&#34;没有&#34;在每种情况下。我纠正了它,如果没有设置意味着你在文件中没有任何内容,那么它将不打印任何内容。

现在最重要的是。您必须翻转数组并将其传递给GET变量代码,以便根据代码映射位置。 请尝试以下代码。

if(!file_exists($file ))
{
    echo "No file found!";
}
else
{
    $postcodes=file($file);


    for($i=0;$i<count($postcodes);$i++)
    {
        $postcodes[$i]=str_replace("\n","",$postcodes[$i]);
        $curPostcode = explode(",", $postcodes[$i]);
        if(isset($array_postcode))
        {
            $array_postcode+=array($curPostcode[1]=>$curPostcode[0]);               
}
        else
        {
            $array_postcode=array($curPostcode[1]=>$curPostcode[0]);
        }

    }
        if(!isset($array_postcode)) 
    {
        echo "nothing"
    ;}
else {
        $flip_array = array_flip($array_postcode);

    if (isset($flip_array[$_GET['suburb']])) {
        echo "The postcode of ".$_GET['suburb']." is :"   .$flip_array[$_GET['suburb']];
    }else{
        echo "Not found.";
    }

}}


}

- &GT;更新

我创建了一个函数,它将根据查询字符串返回邮政编码。它不敏感,传递大写或小写字母。

function searchSuburb($array_postcode)
{
    $keys = [];
    foreach ($array_postcode as $key => $value) {
        $keys[] = strtoupper($key);
    }

    $keys = array_map('trim',$keys);
    $stringKeys = array_map('strval', $keys);
    $values = array_values($array_postcode);        
    $array_postcode = array_combine($stringKeys, $values);

    $serach_key = isset($array_postcode[strtoupper($_GET['suburb'])]) ? $array_postcode[strtoupper($_GET['suburb'])] : "";

    if ($serach_key) {
        return "The postcode of ".$_GET['suburb']." is : "  .$serach_key;
    }else{
        return "Not found.";
    }
}

在php开启标记之后将该函数包含在您的文件中,并在下面调用它。

if(!isset($array_postcode)){
   echo "nothing";
}else {
   echo searchSuburb($array_postcode);
}