Php 我需要根据特定条件将值推入数组,正确的方法是什么?

Php 我需要根据特定条件将值推入数组,正确的方法是什么?,php,arrays,Php,Arrays,我有一个forcycle,它包含一个条件(和一个增量值I): 最后,我需要一个这样的数组: Array ( [1] => Array ( [string] => abc [value] => 0,999 ) [2] => Array ( [string] => meh [value] => 0,123 ) [x] => Array ( [string] => xxx [value] =&g

我有一个forcycle,它包含一个条件(和一个增量值I):

最后,我需要一个这样的数组:

    Array ( [1] => Array ( [string] => abc [value] => 0,999 ) 
            [2] => Array ( [string] => meh [value] => 0,123 ) 
            [x] => Array ( [string] => xxx [value] => xxx ) )
我知道我的代码不起作用,我认为我应该使用array\u push,但我想知道是否有更好的方法来实现这一点


非常感谢

您可以使用?:运算符写得更简洁一些:

$fieldname = ($condition? "value" : "string"); 
$arr[$i][$fieldname] = $node->nodeValue ;

您可以使用?:运算符编写更简洁的代码:

$fieldname = ($condition? "value" : "string"); 
$arr[$i][$fieldname] = $node->nodeValue ;

对不起,这个问题不是很清楚。。这就是你想做的吗

$result = array();
foreach( $nodes as $node ) 
{
    $type = 'value';
    if( is_string( $node->nodeValue ) )
    {
        $type = 'string';
    }

    $result[][$type] = $node->nodeValue;
}

对不起,这个问题不是很清楚。。这就是你想做的吗

$result = array();
foreach( $nodes as $node ) 
{
    $type = 'value';
    if( is_string( $node->nodeValue ) )
    {
        $type = 'string';
    }

    $result[][$type] = $node->nodeValue;
}

第一行(“true”大小写)是否包含逗号?我希望它包含作业。谢谢,它不应该包含作业,这是一个拼写错误,已修复。现在我正在处理它。。。第二个代码块中的键是字符串吗?为了正确理解这个问题:每$i是否会遇到多个节点,其中一个会导致设置“字符串”字段,另一个会导致设置“值”字段?修复代码:if(condition)){$arr[$i][“value”]=$node->nodeValue;}else{$arr[$i][“string”=$node->nodeValue;}是第一行(true)情况)要包含逗号吗?我希望它包含作业。谢谢,它不应该包含作业,这是一个拼写错误,已修复。现在我正在处理它。。。第二个代码块中的键是字符串吗?为了正确理解这个问题,你是否会遇到每$i有多个节点,其中一个可能会导致设置“字符串”字段,另一个是“值”字段?修复你的代码:if(condition)){$arr[$i][“value”]=$node->nodeValue;}else{$arr[$i][“string”=$node->nodeValue;},通过你的代码,我得到了一个数组lke这个:数组([0]=>array([value]=>abc)[1]=>array([string]=>0999)[2]=>array([value]=>meh)[3]=>array([string]=>1009]),而我需要为每个数组的索引有一个值和一个字符串:array([0]=>array([value]=>abc)[0]=>array([string]=>0999)[1]=>array([value]=>meh)[1]=>Array([string]=>1009))实际添加:$result[$i][$type]=$node->nodeValue;让我一切正常。谢谢我相信你需要这样做:foreach($id=>$node的节点)然后$result[$id][$type]=$node->nodeValue;我很抱歉在答案中遗漏了这一点-我还没有测试它:请告诉我,我的答案有什么不同?除了冗长?好的。我可以忍受主观的:)几乎在那里,用你的代码我得到一个数组lke这个:数组([0]=>array([value]=>abc)[1]=>array([string]=>0999)[2]=>array([value]=>meh)[3]=>array([string]=>1009]),而我需要为每个数组的索引有一个值和一个字符串:array([0]=>array([value]=>abc)[0]=>array([string]=>0999][1]=>Array([value]=>meh)[1]=>Array([string]=>1009])实际添加:$result[$i][$type]=$node->nodeValue;让我一切正常。谢谢你我相信你需要这样做:foreach($nodes as$id=>$node)然后$result[$id][$type]=$node->nodeValue;我很抱歉在答案中遗漏了这一点-我还没有测试它:请告诉我,我的答案有什么不同?除了冗长?好的。我可以忍受主观:)