2011-04-23 69 views
1

数组声明的截距:$uids = array();PHP计算阵列

接着这些阵列可以或可以不被创建:

$uids['locations']; 
$uids['ages']; 
$uids['genders']; 

如果它们中的至少2创建我要计算的相交。如果所有3创建了我想要的一切3.

所以相交,我可能要计算的$uids['locations']$uids['ages']相交或$uids['ages']$uids['genders']相交等

如果把所有3个数组中array_intersect然后我得到错误,如果他们中的一个不是数组。我不知道如何处理这个,如果没有很多if:else语句,并且认为有更好的方法。

回答

5

如果你知道你没有更多的数组键大于指定的,您可以使用此:

$intersect = array(); 
if (count($uids) > 1) { 
    $intersect = call_user_func_array('array_intersect', $uids); 
} 

否则,你可以试试这个:

$_uids = array_intersect_key($uids, array(
    'locations' => 1, 
    'ages' => 1, 
    'genders' => 1, 
)); 
if (count($uids) > 1) { 
    $intersect = call_user_func_array('array_intersect', $_uids); 
} 
+1

@nikic:它帮助。阅读'call_user_func_array'文档 – zerkms 2011-04-23 12:56:35

+0

@soulmerge:很棒的解决方案,+1!但在这种情况下,我们不能指定哪些项目相交 – zerkms 2011-04-23 12:57:04

+0

嗯,仇恨会讨厌。已更新回答 – soulmerge 2011-04-23 12:58:01