2013-03-24 93 views
-1

我有以下格式的多维数组:检查在多维数组日期字符串并返回对应的键

$array = array (
    0 => 
    array (
     'date' => '2013-03-25', 
     'name' => 'Bob' 
    ), 
    1 => 
    array (
     'date' => '2013-03-25', 
     'name' => 'Brian' 
    ), 
    2 => 
    array (
     'date' => '2013-03-26', 
     'name' => 'Jack' 
    ), 
    3 => 
    array (
     'date' => '2013-03-26', 
     'name' => 'Bob' 
    ) 
); 

我有一个PHP环路循环通过一年的每一天(这工作正常)。在这个循环中,我想检查上面数组中是否有任何条目,如果是这样,找到的每个条目都会返回'name'对应的键。我想为每个返回的名称运行一个SQL查询,所以大概我会为这些查询创建另一个循环。

我已经尝试了一些东西,但只能成功地陷入混乱。也许有一个相对简单的方法来实现这一点?

+2

让我们看看你已经尝试什么 – 2013-03-24 21:32:55

+0

@JohnConde我没有任何有用的代码来显示。我曾尝试使用array_key_exists()函数,并使用[此处](http://stackoverflow.com/questions/6494907/search-a-multi-dimensional-array-for-certain-values)等功能,没有成功 – Nick 2013-03-24 21:36:44

回答

2
$array2 = array(); 
foreach($array as $item) 
    $array2[$item['date']][] = $item['name']; 

现在检查是否有一些日期的名字,你只需要检查

if(isset($array2[$date])) 
# do something 
+0

感谢您的回答。我尝试过使用它,它将返回数组中找到的所有日期,而不是为每个日期找到的名称。我不确定我是否在这里失去了一些东西。你能解释一下更多的步骤吗? – Nick 2013-03-24 21:47:55

+0

你如何使用它? $ array2 ['2013-03-25']应该是数组('Bob','Brian') – 2013-03-24 21:50:17

+0

谢谢,我现在有这个工作。而不是使用'if(isset($ array2 [$ date]))'我使用foreach($ array2 [$ date]作为$ name)'然后对每个名称运行查询。我现在在数组中有一个叫做'time'的第三个键。我如何检查foreach循环中的'时间'键? – Nick 2013-03-26 21:56:27