好的,假设我有5个数组,全部都是索引数组,并且我想将它们组合起来,这是我能想到的最好方法,是否有更好的方法来处理呢?
function mymap_arrays(){
$args=func_get_args();
$key=array_shift($args);
return array_combine($key,$args);
}
$keys=array('u1','u2','u3');
$names=array('Bob','Fred','Joe');
$emails=array('[email protected]','[email protected]','[email protected]');
$ids=array(1,2,3);
$u_keys=array_fill(0,count($names),array('name','email','id'));
$users=array_combine($keys,array_map('mymap_arrays',$u_keys,$names,$emails,$ids));
这将返回:
Array
(
[u1] => Array
(
[name] => Bob
[email] => [email protected]
[id] => 1
)
[u2] => Array
(
[name] => Fred
[email] => [email protected]
[id] => 2
)
[u3] => Array
(
[name] => Joe
[email] => [email protected]
[id] => 3
)
)
编辑:经过大量基准测试之后,我使用了一个版本的Glass Robots答案来处理可变数量的数组,它比他显然要慢,但比我原来的要快:
function test_my_new(){
$args=func_get_args();
$keys=array_shift($args);
$vkeys=array_shift($args);
$results=array();
foreach($args as $key=>$array){
$vkey=array_shift($vkeys);
foreach($array as $akey=>$val){
$result[$keys[$akey]][$vkey]=$val;
}
}
return $result;
}
$keys=array('u1','u2','u3');
$names=array('Bob','Fred','Joe');
$emails=array('[email protected]','[email protected]','[email protected]');
$ids=array(1,2,3);
$vkeys=array('name','email','id');
test_my_new($keys,$vkeys,$names,$emails,$ids);
参考方案
出于个人可读性考虑,我会这样做:
$keys = array('u1','u2','u3');
$names = array('Bob','Fred','Joe');
$emails = array('[email protected]','[email protected]','[email protected]');
$ids = array(1,2,3);
$result = array();
foreach ($keys as $id => $key) {
$result[$key] = array(
'name' => $names[$id],
'email' => $emails[$id],
'id' => $ids[$id],
);
}
验证IBAN PHP - php在设计新平台时,我们尝试集成IBAN编号。我们必须确保IBAN已经过验证,并且存储在数据库中的IBAN始终正确。那么验证数字的正确方法是什么? 参考方案 正如我在其他问题中解释的逻辑一样,我尝试自己创建一个函数。根据Wikipedia文章中解释的逻辑,在下面找到合适的功能。国家特定验证。它适合吗http://en.wikipedia.org/wiki/Int…
将字符串放在数组中的每个数组之间-PHP - php可以说我有一个包含9个句子的文本文件(可能更多!这只是一个例子),然后我在php中读取该文件并将其每3个句子拆分一次,并将其存储在变量中,从而导致该数组:$table = array( array( 'text number 1', 'text number 2', 'text number 3' …
PHP strtotime困境 - php有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00…
PHP-全局变量的性能和内存问题 - php假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…
PHP:对数组排序 - php请如何排序以下数组Array ( 'ben' => 1.0, 'ken' => 2.0, 'sam' => 1.5 ) 至Array ( 'ken' => 2.0, 'sam' => 1.5, 'ben' =&…