压缩关联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)

假设PHP中有以下数组:

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+=2
foreach($i=0;$i
?是的,不是最快的方法,正如w