检查一组项目中是否至少有一项不是空的

时间:2018-03-24 14:55:43

标签: php

我有这种变量列表:

$item[1]['Value']
$item[2]['Value']
...
$item[50]['Value']

其中一些是null

如何检查其中至少有一个是否为空,在这种情况下,将其中一个(无论是第一种情况还是最后一种情况)定义为新变量?

P.S。 $var[number]['foo']格式的名称是什么?它是一个数组吗?

7 个答案:

答案 0 :(得分:1)

使用empty()函数

的简单测试
if(!empty($item[$i]['value'])
{
    echo "exists";
}else{
   echo "is not set";
}

如果您想要影响新值(如果它不存在或未定义),您可以使用null coalescing operator

$item[$i]['value'] = $item[$i]['value'] ?? $newvalue;

答案 1 :(得分:0)

检查至少其中一个不是空的

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    TextBox1.Clear()
    TextBox2.Clear()
End Sub



Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim i, j, k As Integer
    i = TextBox1.Text
    j = TextBox2.Text
    Label4.Text = "Even number from " & i & " and " & j & " are "
    For k = i To j
        If i Mod 2 = 0 Then
            Label3.Text = "" & i + 2
        ElseIf i Mod 3 = 0 Then
            Label3.Text = "" & i + 1
        End If
    Next

答案 2 :(得分:0)

这会将最后找到的已使用元素设置为newVariable

for($i = 0; $i < sizeOf($item); i ++)
{
 if(isset($item[$i]['Value']))
 {
  $newVariable = $item[$i]['Variable'];
 }
}

答案 3 :(得分:0)

你可以array_filter()并像这样使用empty()

// example data
$items = [
    ['Value' => null],
    ['Value' => 2],
    ['Value' => null],
];

// remove elements with 'Value' = null
$filtered = array_filter($items, function($a) { return !is_null($a['Value']); }) ;

$element = null;
// If there is some values inside $filtered,
if (!empty($filtered)) {
    // get the first element
    $element = reset($filtered) ;
    // get its value
    $element = $element['Value'];
}

if ($element)
    echo $element ;

将输出:

2
  • array_filter()返回一个非空值的数组(使用use函数)。
  • empty()检查数组是否为空。
  • reset()获取数组中的第一个元素。

答案 4 :(得分:0)

如果要检查阵列中所有项目的所有值,可以使用foreach

示例

$item[1]['Value'] = "A";
$item[2]['Value'] = "B";
$item[4]['Value'] = "";
$item[3]['Value'] = NULL;


foreach ($item as $key => $value) {
    if (!empty($value['Value'])) {
        echo "$key It's not empty \n";
    } else {
        echo "$key It's empty \n";
    }
}

<强>结果:

1 It's not empty 
2 It's not empty 
3 It's empty 
4 It's empty 

此外,您可以看到empty函数将NULL视为空。

-----编辑-----

我忘了添加方法来检测是否至少有一个项目是空的,你可以使用:

示例

$item[1]['Value'] = "A";
$item[2]['Value'] = "B";
$item[4]['Value'] = "";
$item[3]['Value'] = NULL;


foreach ($item as $key => $value) {
    if (!empty($value['Value'])) {
        $item_result = false;
    } else {
        $item_result = true;
    }
}

if ($item_result) {
    echo "At least one item is empty";
} else {
    echo "All items have data";
}

<强>结果:

At least one item is empty

答案 5 :(得分:0)

如果您想使用内部密钥作为变量名,那么您可以检查是否可以创建它并创建它,如果是这样的话:

function any($array) {
    foreach ($array as $key => $item) {
        if ($item) return $key;
    }
    return false;
}

$variableName = any($var);

if ($variableName !== false) {
    {$variableName} = "yourvalue";
} else {
    //We ran out of variable names
}

P.S。 $var[number]['foo']的格式是一个数组,外面有数字键,内部有一个字符串键。

答案 6 :(得分:0)

<?php
$data = 
[
    1  => ['foo' => ''],
    2  => ['bar' => 'big'],
    10 => ['foo' => 'fat']
];

$some_foo = function ($data) {
    foreach($data as $k => $v)
        if(!empty($v['foo'])) return true;

    return false;
};

var_dump($some_foo($data));
$data[10]['foo'] = null;
var_dump($some_foo($data));

输出:

bool(true)
bool(false)

或者,您可以过滤评估为false的foo值:

$some_foo = (bool) array_filter(array_column($data, 'foo'));