Php 使用特定值反转数组元素
我有一个这样的数组Php 使用特定值反转数组元素,php,arrays,sorting,Php,Arrays,Sorting,我有一个这样的数组 $array = array( [0] => 'red1', [1] => 'blue1', [2] => 'red2', [3] => 'red3', [4] => 'blue2' ); A只想反转具有红色值的元素的顺序,使其看起来像这样: $array = array( [0] => 'red3', [1] => 'blue1', [2] => 'red2', [3] => 'red1', [4] => 'bl
$array = array( [0] => 'red1', [1] => 'blue1', [2] => 'red2', [3] => 'red3', [4] => 'blue2' );
A只想反转具有红色值的元素的顺序,使其看起来像这样:
$array = array( [0] => 'red3', [1] => 'blue1', [2] => 'red2', [3] => 'red1', [4] => 'blue2' );
您可以将red的引号捕获到一个新数组中并对其进行排序
<?php
$arr = array(
'red1',
'blue1',
'red2',
'red3',
'blue2'
);
$sortArr = array();
for ($i=0; $i < sizeof($arr); $i++) {
if(strstr($arr[$i], "red")){
$sortArr[] = &$arr[$i];
}
}
?>
我认为您可以使用strpos搜索特定的单词,并使用ksort对数组进行排序根据关键字按升序排序关联数组
foreach ($array as $key => $value) {
if(strpos($value,"red") !== false){
($key === 0) ? $index = 3 : (($key === 3) ? $index = 0 : $index = 2);
$temp[$index] = $value;
}
else {
$temp[$key] = $value;
}
}
ksort($temp);
var_dump($temp);
[但它在比这更大的阵列中不起作用]我认为可能的解决方案是: 从要查找的$array中获取所有值,然后 将它们存储在数组$found中 将$found中的值反转,保留键 将$array中的值替换为$find中的值,使用 钥匙 例如:
$array = array(0 => 'red1', 1 => 'blue1', 2 => 'red2', 3 => 'red3', 4 => 'blue2');
// First get all the values with 'red' and store them in an array
$found = preg_grep('/red\d+/', $array);
// Reverse the values, keeping the keys
$found = array_combine(
array_keys($found),
array_reverse(
array_values($found)
)
);
// Then replace the values of $array with values having the same keys in $found
$array = array_replace($array, $found);
var_dump($array);
将导致:
array(5) {
[0]=>
string(4) "red3"
[1]=>
string(5) "blue1"
[2]=>
string(4) "red2"
[3]=>
string(4) "red1"
[4]=>
string(5) "blue2"
}
如何仅反转红色元素而不接触任何其他元素