【问题标题】:Php - add associative array to new array only if all values aren't emptyPhp - 仅当所有值都不为空时才将关联数组添加到新数组
【发布时间】:2020-10-08 09:20:57
【问题描述】:

我在 php 中循环一个关联数组,并且想将该数组添加到一个新数组中,但前提是键值对中的所有值($name 或 $value)都不为空。我循环的数组看起来像这样:

$arr = ['label' => $name, 'value' => $value]

我尝试了以下方法:

$arr = ['label' => $name, 'value' => $value]

$filtered = [];

foreach ($arr as $key => $val) {
            if(!empty($val)) {
                $customAttrsFiltered[] = [$arr];
            }
         }

但是没有成功。 任何帮助表示赞赏

【问题讨论】:

  • 请向我们展示您的最佳尝试(代码)以及您遇到的问题。虽然这不是您提出的第一个问题,但您可能需要复习一下,请阅读How to Ask
  • 谢谢你,我已经编辑了我的帖子

标签: php arrays loops associative-array


【解决方案1】:

试试这个

<?php

$array = [
    [ 'label' => 'Label 1', 'value' => 'Value 1' ],
    [ 'label' => 'Label 2', 'value' => '' ],
    [ 'label' => 'Label 3', 'value' => 'Value 3' ],
    [ 'label' => 'Label 4', 'value' => '' ],
];

$new_array = array_filter( array_map( function( $item ) {
    if ( empty( $item['value'] ) ) {
        return;
    }
    
    return $item;
}, $array ) );

print_r( $new_array );

你应该得到这样的东西

Array
(
    [0] => Array
        (
            [label] => Label 1
            [value] => Value 1
        )

    [2] => Array
        (
            [label] => Label 3
            [value] => Value 3
        )

)

【讨论】:

    【解决方案2】:

    这对你有用吗?

    $arr = ['label' => $name, 'value' => $value]
    
    $filtered = [];
    
    $hasEmptyValue = false;
    foreach ($arr as $key => $val) {
        if(empty($val)) {
            $hasEmptyValue = true;
        }
    }
    if(!$hasEmptyValue) {
        $customAttrsFiltered[] = [$arr];
    }
    

    【讨论】:

    • 感谢您的回答,我是数组方法的忠实拥护者,所以会选择上面的答案,但仍然非常感谢您
    猜你喜欢
    • 2018-01-15
    • 2021-11-21
    • 2021-12-03
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多