压缩关联php数组
假设PHP中有以下数组:压缩关联php数组,php,arrays,associative,Php,Arrays,Associative,假设PHP中有以下数组: array('red','blue','green','purple'); 我希望使用最简单、最快速的方法使该数组如下所示: array('red'=>'blue','green'=>'purple'); 如果已经有一个php函数可以实现这一点,那就更好了。我运行的是PHP5.4和5.5,希望不会有问题。不一定是最快的方法,但可能会让一些人了解一些他们以前不知道的php功能: $isEven = function ($value)
array('red','blue','green','purple');
我希望使用最简单、最快速的方法使该数组如下所示:
array('red'=>'blue','green'=>'purple');
如果已经有一个php函数可以实现这一点,那就更好了。我运行的是
PHP5.4
和5.5
,希望不会有问题。不一定是最快的方法,但可能会让一些人了解一些他们以前不知道的php功能:
$isEven = function ($value) {
return !($value & 1);
};
$isOdd = function ($value) {
return $value & 1;
};
function keyfilter($values, $function) {
return array_intersect_key(
$values,
array_filter(
array_keys($values),
$function
)
);
}
$colourArray = array('red','blue','green','purple');
$mi = new MultipleIterator(
MultipleIterator::MIT_NEED_ANY |
MultipleIterator::MIT_KEYS_ASSOC
);
$mi->attachIterator(
new ArrayIterator(
keyfilter(
$colourArray, $isEven
)
),
'key'
);
$mi->attachIterator(
new ArrayIterator(
keyfilter(
$colourArray, $isOdd
)
),
'value'
);
$newColourArray = array();
foreach($mi as $details) {
$newColourArray[$details['key']] = $details['value'];
}
var_dump($newColourArray);
这不一定是最快的方法,但它可能会让一些人了解PHP的一些以前不知道的特性:
$isEven = function ($value) {
return !($value & 1);
};
$isOdd = function ($value) {
return $value & 1;
};
function keyfilter($values, $function) {
return array_intersect_key(
$values,
array_filter(
array_keys($values),
$function
)
);
}
$colourArray = array('red','blue','green','purple');
$mi = new MultipleIterator(
MultipleIterator::MIT_NEED_ANY |
MultipleIterator::MIT_KEYS_ASSOC
);
$mi->attachIterator(
new ArrayIterator(
keyfilter(
$colourArray, $isEven
)
),
'key'
);
$mi->attachIterator(
new ArrayIterator(
keyfilter(
$colourArray, $isOdd
)
),
'value'
);
$newColourArray = array();
foreach($mi as $details) {
$newColourArray[$details['key']] = $details['value'];
}
var_dump($newColourArray);
这不一定是最快的方法,但它可能会让一些人了解PHP的一些以前不知道的特性:
$isEven = function ($value) {
return !($value & 1);
};
$isOdd = function ($value) {
return $value & 1;
};
function keyfilter($values, $function) {
return array_intersect_key(
$values,
array_filter(
array_keys($values),
$function
)
);
}
$colourArray = array('red','blue','green','purple');
$mi = new MultipleIterator(
MultipleIterator::MIT_NEED_ANY |
MultipleIterator::MIT_KEYS_ASSOC
);
$mi->attachIterator(
new ArrayIterator(
keyfilter(
$colourArray, $isEven
)
),
'key'
);
$mi->attachIterator(
new ArrayIterator(
keyfilter(
$colourArray, $isOdd
)
),
'value'
);
$newColourArray = array();
foreach($mi as $details) {
$newColourArray[$details['key']] = $details['value'];
}
var_dump($newColourArray);
这不一定是最快的方法,但它可能会让一些人了解PHP的一些以前不知道的特性:
$isEven = function ($value) {
return !($value & 1);
};
$isOdd = function ($value) {
return $value & 1;
};
function keyfilter($values, $function) {
return array_intersect_key(
$values,
array_filter(
array_keys($values),
$function
)
);
}
$colourArray = array('red','blue','green','purple');
$mi = new MultipleIterator(
MultipleIterator::MIT_NEED_ANY |
MultipleIterator::MIT_KEYS_ASSOC
);
$mi->attachIterator(
new ArrayIterator(
keyfilter(
$colourArray, $isEven
)
),
'key'
);
$mi->attachIterator(
new ArrayIterator(
keyfilter(
$colourArray, $isOdd
)
),
'value'
);
$newColourArray = array();
foreach($mi as $details) {
$newColourArray[$details['key']] = $details['value'];
}
var_dump($newColourArray);
我想到的第一件事是这样的:
$array=array('red','blue','green','purple');
函数数组\u对($source)
{
$output=array();
做{
列表($key,$value)=数组_拼接($source,0,2);
$output[$key]=$value;
}而(!empty($source));
返回$output;
}
变量转储(数组对($array));
按需要输出阵列:
数组(2){
[“红色”]=>
字符串(4)“蓝色”
[“绿色”]=>
字符串(6)“紫色”
}
如果源数组中的元素数为奇数,则偶数也可以:
$array=array('red','blue','green','purple','odd');
变量转储(数组对($array));
结果:
数组(3){
[“红色”]=>
字符串(4)“蓝色”
[“绿色”]=>
字符串(6)“紫色”
[“奇数”]=>
无效的
}
我想到的第一件事是这样的:
$array=array('red','blue','green','purple');
函数数组\u对($source)
{
$output=array();
做{
列表($key,$value)=数组_拼接($source,0,2);
$output[$key]=$value;
}而(!empty($source));
返回$output;
}
变量转储(数组对($array));
按需要输出阵列:
数组(2){
[“红色”]=>
字符串(4)“蓝色”
[“绿色”]=>
字符串(6)“紫色”
}
如果源数组中的元素数为奇数,则偶数也可以:
$array=array('red','blue','green','purple','odd');
变量转储(数组对($array));
结果:
数组(3){
[“红色”]=>
字符串(4)“蓝色”
[“绿色”]=>
字符串(6)“紫色”
[“奇数”]=>
无效的
}
我想到的第一件事是这样的:
$array=array('red','blue','green','purple');
函数数组\u对($source)
{
$output=array();
做{
列表($key,$value)=数组_拼接($source,0,2);
$output[$key]=$value;
}而(!empty($source));
返回$output;
}
变量转储(数组对($array));
按需要输出阵列:
数组(2){
[“红色”]=>
字符串(4)“蓝色”
[“绿色”]=>
字符串(6)“紫色”
}
如果源数组中的元素数为奇数,则偶数也可以:
$array=array('red','blue','green','purple','odd');
变量转储(数组对($array));
结果:
数组(3){
[“红色”]=>
字符串(4)“蓝色”
[“绿色”]=>
字符串(6)“紫色”
[“奇数”]=>
无效的
}
我想到的第一件事是这样的:
$array=array('red','blue','green','purple');
函数数组\u对($source)
{
$output=array();
做{
列表($key,$value)=数组_拼接($source,0,2);
$output[$key]=$value;
}而(!empty($source));
返回$output;
}
变量转储(数组对($array));
按需要输出阵列:
数组(2){
[“红色”]=>
字符串(4)“蓝色”
[“绿色”]=>
字符串(6)“紫色”
}
如果源数组中的元素数为奇数,则偶数也可以:
$array=array('red','blue','green','purple','odd');
变量转储(数组对($array));
结果:
数组(3){
[“红色”]=>
字符串(4)“蓝色”
[“绿色”]=>
字符串(6)“紫色”
[“奇数”]=>
无效的
}
您可以轻松编写自己的函数来执行此操作:
$src = array('red','blue','green','purple');
function glue($arr) {
while(count($arr) > 0) {
$dst[array_shift($arr)] = array_shift($arr);
}
return $dst;
}
foreach(glue($src) as $key => $value)
print $key ." => ".$value . "\n";
您可以轻松编写自己的函数来执行此操作:
$src = array('red','blue','green','purple');
function glue($arr) {
while(count($arr) > 0) {
$dst[array_shift($arr)] = array_shift($arr);
}
return $dst;
}
foreach(glue($src) as $key => $value)
print $key ." => ".$value . "\n";
您可以轻松编写自己的函数来执行此操作:
$src = array('red','blue','green','purple');
function glue($arr) {
while(count($arr) > 0) {
$dst[array_shift($arr)] = array_shift($arr);
}
return $dst;
}
foreach(glue($src) as $key => $value)
print $key ." => ".$value . "\n";
您可以轻松编写自己的函数来执行此操作:
$src = array('red','blue','green','purple');
function glue($arr) {
while(count($arr) > 0) {
$dst[array_shift($arr)] = array_shift($arr);
}
return $dst;
}
foreach(glue($src) as $key => $value)
print $key ." => ".$value . "\n";
$originalArray=array('red','blue','green','purple');
$compressedArray=array();
$count=0;
而($count
您可以看到它在$originalArray=array('red'、'blue'、'green'、'purple')上运行;
$compressedArray=array();
$count=0;
而($count
您可以看到它在$originalArray=array('red'、'blue'、'green'、'purple')上运行;
$compressedArray=array();
$count=0;
而($count
您可以看到它在$originalArray=array('red'、'blue'、'green'、'purple')上运行;
$compressedArray=array();
$count=0;
而($count
你可以看到它在
foreach($i=0;$i
?是的,这不是最快的方法,因为我们应该比较所有元素,使用$i+=2foreach($i=0;$i
?是的,不是最快的方法,正如w