【问题标题】:Populate an array with values while looping [duplicate]循环时用值填充数组[重复]
【发布时间】:2022-10-07 10:56:24
【问题描述】:

我有那些数组,如何按字符串排序?只是我需要对多个数组进行排序 我尝试 sort() 但没有运气,它给了我错误。

    array(1) {
      [0]=>
      string(2) \"10\"
    }
    
    array(1) {
      [0]=>
      string(1) \"2\"
    }
    
    array(1) {
      [0]=>
      string(1) \"3\"
    }
    
    array(1) {
      [0]=>
      string(1) \"4\"
    }

这是我现在的代码

          <?php
             $myfiles = glob(\'articol/*\');
             foreach($myfiles as $filename){ 
                if(is_file($filename)){
                      $file = file_get_contents($filename);
                      $html = $file;
                      preg_match(\'/<p class=\"id\" hidden>(.*?)<\\/p>/s\', $html, $id) // Return 1 or 2 or 3 .... or 10 ; 
                      $idFinal = array($id[1]);

                      sort($idFinal);
                      echo \"<pre>\"; var_dump($idFinal); echo \"</pre>\";
                }
             }
          ?>
  • 你能分享你试图在 JSON 中排序的数组吗?
  • 你能 print_r($idFinal);我看到很多数组,而不是一个,也许是 array_merge 首先
  • 是的,我有多个数组,它来自多个 HTML 文件,根据 \'$myfiles = glob(\'articol/*\'); foreach($myfiles as $filename){ .... }\'
  • 应该尝试 array_merge :)

标签: php arrays


【解决方案1】:

sort() 函数是正确的。

$a1 = ["10"];
$a2 = ["2"];
$a3 = ["3"];
$a4 = ["4"];

$array = array_merge($a1, $a2, $a3, $a4);

 
$new = array_map(function($e) {
    return (int) $e;
},$array);

sort($new);
print_r($new);

输出

Array
(
    [0] => 2
    [1] => 3
    [2] => 4
    [3] => 10
)

更新

// Array ( [0] => 10 ) Array ( [0] => 2 ) Array ( [0] => 3 ) Array ( [0] => 4 ) Array ( [0] => 5 ) Array ( [0] => 6 ) Array ( [0] => 7 ) Array ( [0] => 8 ) Array ( [0] => 9 ) Array ( [0] => 1 ) 


$mainArray = [
    ["10"], ["2"],["3"], ["4"],
];

function mergeAndSortArrays($arr) {
    $newArr =  array_map(function($e) {
        return (int) $e[0];
    }, $arr);
    sort($newArr);
    return $newArr;
}

输出

Array
(
    [0] => 2
    [1] => 3
    [2] => 4
    [3] => 10
)

【讨论】:

  • 如果我有多个数组,这可以应用吗? $array = ["10","2","3","4"] ; ,我想我应该先使用array_merge。是这样吗?
  • @TudorMihai 谢谢。我也刚看到。我更新我的答案。与 array_merge。
  • 谢谢你的更新,你能告诉我如果我有未知数量的数组,我怎么能 array_merge ?我必须指定它来自一个 html 文件的每个数组,这取决于编辑器将添加多少文件。可以在 40 到 4k 之间 :)
  • 如果你看一下代码 $myfiles = glob('articol/*');在 articol/ 目录中扫描文件。
  • print_r($idFinal) 返回: 数组 ( [0] => 10 ) 数组 ( [0] => 2 ) 数组 ( [0] => 3 ) 数组 ( [0] => 4 ) 数组 ( [0] => 5 ) 数组 ( [0] => 6 ) 数组 ( [0] => 7 ) 数组 ( [0] => 8 ) 数组 ( [0] => 9 ) 数组 ( [0] => 1 ) 类似于 var_dump ($idFinal)
【解决方案2】:

以下是在php中对数组进行排序的方法

sort() - sort arrays in ascending order
rsort() - sort arrays in descending order
asort() - sort associative arrays in ascending order, according to the value
ksort() - sort associative arrays in ascending order, according to the key
arsort() - sort associative arrays in descending order, according to the value
krsort() - sort associative arrays in descending order, according to the key

选一个。

$nums = array("10", "2", "5");
sort($nums);
print_r($nums);

//Array ( [0] => 2 [1] => 5 [2] => 10 )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 2019-08-13
    相关资源
    最近更新 更多