从一个数组创建另一个数组

时间:2012-08-13 20:47:19

标签: php arrays sorting array-filter

我在PHP中得到了这个数组:

$arr =('1-1.jpg','1-2.jpg','11-3.jpg', '1-4.jpg', '3-5.jpg', '41-5.jpg','1-3.jpg','4-5.jpg','14-5.jpg','54-5.jpg','64-5.jpg','14-5.jpg', '1-5.jpg');

我需要这个数组,但我在服务器上有PHP 5.27版本:(

$newarray=('1-1.jpg','1-2.jpg','1-3.jpg', '1-4.jpg', '1-5.jpg');

忘记服务器版本,标准为“1-”。如何获得仅以“1 - ”开头的所有元素?

4 个答案:

答案 0 :(得分:5)

使用此代码:

<?php
$arr = array('1-1.jpg','1-2.jpg','11-3.jpg', '1-4.jpg', '3-5.jpg', '41-5.jpg','1-3.jpg','4-5.jpg','14-5.jpg','54-5.jpg','64-5.jpg','14-5.jpg', '1-5.jpg');
$newarray = array();
foreach($arr as $item) {
    if(substr($item, 0, 2) == '1-') $newarray[] = $item;
}
sort($newarray); // Add this to sort the array
?>

您可以在sort之后使用foreach函数对数组进行排序。

答案 1 :(得分:1)

<?php
$new_array = array();
foreach ($old_array as $line) {
   if (substr($line, 0, 2) == "1-") {
      $new_array[] = $line;
   }
}
?>

检查每个元素的前两个字符是否为1,如果是,则将其添加到新数组中。

答案 2 :(得分:1)

使用preg_grep

$arr = array('1-1.jpg','1-2.jpg','11-3.jpg', '1-4.jpg', '3-5.jpg', '41-5.jpg','1-3.jpg','4-5.jpg','14-5.jpg','54-5.jpg','64-5.jpg','14-5.jpg', '1-5.jpg');

print_r(preg_grep('#^1-#', $arr));

演示:http://codepad.org/ipDmYEBI

答案 3 :(得分:1)

另一种方法是使用PHP的array_filter方法:

$arr = array('1-1.jpg','1-2.jpg','11-3.jpg', '1-4.jpg', '3-5.jpg', '41-5.jpg','1-3.jpg','4-5.jpg','14-5.jpg','54-5.jpg','64-5.jpg','14-5.jpg', '1-5.jpg');
$newArr = array_filter($arr, "filterArray"); // stores the filtered array

function filterArray($value){
    return (substr($value, 0, 2) == "1-");
}