【问题标题】:Checking if array value exists in a PHP检查PHP中是否存在数组值
【发布时间】:2016-06-22 12:36:20
【问题描述】:

我将生日日期存储在一个数组中

$birthdays = array
 (
  array("Alex",5,12),
  array("Tom",2,20),
  array("Sarah",6,12),
  array("Anna",6,8) 
  array("Jonh",10,7)  );

我需要html表单(2个输入文本框)我必须输入日期,按下按钮,如果日期存在,将打印今天过生日的人的名字

【问题讨论】:

  • 你的意思是如果一个特定的数组在你的$birthdays数组上?如果是,显示它?
  • 输入会怎样? 2个变量?喜欢$day = 20; $month = 2?
  • 是的,按日期搜索并显示名称
  • 我需要html表单(2个输入文本框)我必须输入日期,按下按钮,如果日期存在,将打印今天过生日的人的名字
  • @AlexBazikalo 你应该问另一个问题,因为你刚刚在 cmets 中提出的问题与这个问题无关。

标签: php arrays display


【解决方案1】:

使用此功能:

function retrieveBirthdays( $birthdays, $month, $day=0 )
{
    return array_values
    (
        array_filter
        (
            $birthdays, 
            function( $row ) use( $month, $day ) 
            {
                if( $day ) return ( $row[1]==$month && $row[2]==$day );
                else       return ( $row[1]==$month );
            } 
        ) 
    );
}

print_r( retrieveBirthdays( $birthdays, 2, 20 ) );

将输出:

Array
(
    [0] => Array
        (
            [0] => Tom
            [1] => 2
            [2] => 20
        )

)

相反,要获得所有六月生日,您可以使用:

print_r( retrieveBirthdays( $birthdays, 6 ) );

你将获得:

Array
(
    [0] => Array
        (
            [0] => Sarah
            [1] => 6
            [2] => 12
        )

    [1] => Array
        (
            [0] => Anna
            [1] => 6
            [2] => 8
        )

)

【讨论】:

  • 我需要html表单(2个输入文本框)我必须输入日期,按下按钮,如果日期存在,将打印今天过生日的人的名字
  • @AlexBazikalo 检索今天生日的人的姓名:$persons = retrieveBirthdays( $birthdays, 3, 9 ); $name = $persons[0][0]$name 是您想要的名称。旁注:你认为两个人生日相同是完全不可能的吗?
【解决方案2】:
$birthdays = array (
array("Alex",5,12),
array("Tom",2,20),
array("Sarah",6,12),
array("Anna",6,8), 
array("Jonh",10,7),
array()
);

foreach($birthdays as $birthday) {
if($birthday) {
echo $birthday[0]."<br/>";
echo $birthday[1]."<br/>";
echo $birthday[2]."<br/>";
}
}

看看上面的代码是否有帮助,它只是在 foreach 中有一个 if 条件来检查数组是否为空

【讨论】:

  • 我看到问题已被用户更改。所以基于最初的问题是检查价值是否存在,为什么我的这个答案被否决了?
  • 我需要html表单(2个输入文本框)我必须输入日期,按下按钮,如果日期存在,将打印今天过生日的人的名字
【解决方案3】:

试试这个:

<?php

$birthdays = array
 (
  array("Alex",5,12),
  array("Tom",2,20),
  array("Sarah",6,12),
  array("Anna",6,8),
  array("Jonh",10,7)  
 );

 function getBirthdayNameByDate($birthdaysArray, $day, $month)
 {
     foreach($birthdaysArray as $array)
     {
         if($array[1] == $month && $array[2] == $day)
            return $array[0];
     }

     return null;

 }

$result = getBirthdayNameByDate($birthdays, 8, 6);

var_dump($result);

【讨论】:

  • var_dump($result); 做什么?
  • 显示存储在作为参数传递的变量中的值。它对调试很有用。
  • 我需要html表单(2个输入文本框)我必须输入日期,按下按钮,如果日期存在,将打印今天过生日的人的名字
【解决方案4】:

你可以试试这样的……

$SearchValue = "Sarah"
foreach ($birthdays as $value)
{
    if (is_array($value))
    {
        if (in_array($SearchValue, $value)
        {
            //prints the inner array if the inner array contains your search value
            print_r($value);
        }
    }
}

【讨论】:

  • 不知道为什么反对派会针对我的回答。它完全符合 OP 的要求。
  • 当索引定义完美时,我不会使用in_array。请改用if ($value[0] == $SearchValue)
  • 当我写答案 @deceze 时,OP 并没有指定他们想要按任何字段搜索,所以我使用 in_arary 编写它,以便它可以搜索数组中的所有字段。跨度>
  • 我需要html表单(2个输入文本框)我必须输入日期,按下按钮,如果日期存在,将打印今天过生日的人的名字
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多