【问题标题】:Php: array mergephp:数组合并
【发布时间】:2017-09-04 10:41:39
【问题描述】:

我对 php 比较陌生 抱歉,如果我没有正确提出问题。就这样:

我的数组:

$value = array(
        array('2500'),
        array('3000'),
        array('3500'),
        array('4000')
    );

来自代码:

$Array = array();
for ($i=0; $i<count($value);$i++) {
    $Array[]=$value;
} 
echo '<pre>';   
print_r($Array);
echo '</pre>';

如何像这样将它合并到一个数组中:

Array
    [0] => 2500
    [1] => 3000
    [2] => 3500
    [3] => 4000
)

我尝试了很多从 array_merge 到 array_combine 的代码,似乎没有任何效果。他们是我在代码中遗漏的东西,还是有一个函数或过滤器可以完成这个。

谢谢

【问题讨论】:

  • 使用sizeof,而不是使用sizeof,使用count
  • 3v4l.org/lC1g8 为我工作。尽管您似乎在另一种情况下查看此 for 循环只查看一个值?
  • 变量 $value 输出如下:2500300035004000
  • 耶稣!我害怕在这里提出问题。
  • $value 中到底是什么?您的初始代码块看起来像四个独立的数组,而不是一个。

标签: php arrays for-loop


【解决方案1】:

试试这个:

<?php
$value = array(
        array('2500'),
        array('3000'),
        array('3500'),
        array('4000')
    );

echo '<pre>'; // for display purpose only
print_r($value); // for display purpose only
$array = array();
if (is_array($value)) {
    foreach ($value as $v) {
        $array = array_merge($array,$v);
    }
} else {
    $array = array($value);
}

print_r($array); // for display purpose only

根据 OP 的更新编辑

http://www.phpwin.org/s/ib6dOO

【讨论】:

  • 是的,根据更新后的问题答案是正确的,但是如果 $value 等于这个 2500300035004000
  • 奇怪的是它仍然输出: Array ( [0] => 2500 ) Array ( [0] => 3000 ) Array ( [0] => 3500 ) Array ( [0] => 4000 ) , 它的like数组嵌入其中。
  • 这是您的问题的问题,没有明确指出 $value。 1) 在 get_sub_field(); 之前设置 $array = array 2) 将 $value 添加到 $array,然后使用 $array = array_merge($array, $value);
  • 认为我做错了。感谢您的帮助
  • 嗨,Michael Eugene Yuen,我用这个来搞定它:$addmore_deadline_cat_fees = array(); if (have_rows('add_more_deadlines')): 而 (have_rows('add_more_deadlines')) : the_row(); $数组 = 数组(); if (have_rows('categories_and_fees')): 而 (have_rows('categories_and_fees')) : the_row(); $array_val = get_sub_field('fee'); array_push($array,$array_val); endwhile;endif; $addmore_deadline_cat_fees = array_merge($addmore_deadline_cat_fees, $array); endwhile;endif; print_r($addmore_deadline_cat_fees);
【解决方案2】:

改变

$Array[]=$value;

$Array[]=array_merge($value, $Array);

【讨论】:

  • sorry did not work 输出是这样的: Array ( [0] => ) Array ( [0] => ) Array ( [0] => ) Array ( [0] => )跨度>
【解决方案3】:

您可以使用 foreach 遍历数组。

<?php

$data = array(
    array('2500'),
    array('3000'),
    array('3500'),
    array('4000')
);

$output = [];
foreach($data as $value) {
    $output[] = $value[0];
}

var_dump($output);

输出:

array (size=4)
  0 => string '2500' (length=4)
  1 => string '3000' (length=4)
  2 => string '3500' (length=4)
  3 => string '4000' (length=4)

您也可以使用 array_map 对数组的每个成员运行一个函数。 array_pop 返回每个子数组“弹出”的最后一个元素。

$output = array_map('array_pop', $data);
var_dump($output);

输出:

array (size=4)
  0 => string '2500' (length=4)
  1 => string '3000' (length=4)
  2 => string '3500' (length=4)
  3 => string '4000' (length=4)

【讨论】:

    【解决方案4】:

    你可以试试这个

    $output = array_column($value, 0);
    print_r($output);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      • 2012-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多