如何强制元素以数组形式(在php中)

时间:2011-04-13 14:36:13

标签: php arrays multidimensional-array

我有代码遍历一个本身就是数组的元素数组。该代码适用于2个或更多此类元素。但是,它不适用于一个数组“元素”(因为它开始遍历每个子元素)。

我的代码:

  foreach($list as $element)
  ...

大部分时间,$ list是:

Array
(
    [0] => Array
        (
            [a] => 'abc'
            [b] => 'bcd'
        )

    [1] => Array
        (
            [a] => 'abc'
            [b] => 'bcd'
        )
)

ehich工作正常,但如果$ list是:

 Array
 (
    [a] => 'abc'
    [b] => 'bcd'
  )
显然,我的代码现在会被搞砸,因为foreach将遍历'a'和'b'。

我想转换:

 Array
 (
    [a] => 'abc'
    [b] => 'bcd'
  )

成:

Array
(
    [0] => Array
        (
            [a] => 'abc'
            [b] => 'bcd'
        )
 )

以最有效的方式!

5 个答案:

答案 0 :(得分:1)

使用is_array() (linked)检测传递的项目是否为数组。然后你可以相应地处理它。

foreach($somethingarray['something'] as $something) {
    if(is_array($something)) {
        // do something with array
    } else {
        // do something with non array
    }
}

http://www.phplint.com/上运行此操作,以查看解决您的评论的结果@Frank D.

echo '<pre>';
$var = array( 'my_var' => array( 'my_value' ) );
var_dump( $var );
$var2 = array( $var );
var_dump( $var2 );
echo '</pre>';

答案 1 :(得分:0)

使用(数组)强制变量成为这样的数组:

foreach ((array)$somethingarray['something'] as $something) { /* $something is first array's element... And the only if you casted your "not-array" into an array by (array) */ }

答案 2 :(得分:0)

如您所知,foreach将迭代数组中的每个元素。如果数组为空,则不会执行任何操作。所以你可以简单地做$ var = array();设置一个空数组。

更好的解决方案是在执行foreach语句之前检查输入是否是数组,使用in_array()。

答案 3 :(得分:0)

小心如何插入第一个元素
永远不要让$ list成为

Array
(
   [a] => 'abc'
   [b] => 'bcd'
)

所以

//create your first element as
$firstElement=array('a'=>'abc','b'=>'bcd');
$list[] = $firstElement;                 
// or in one sentence:  $list[] = array('a'=>'abc', 'b'=>'bcd');
// call your function here for one elment array
yourFunc($list)

// and so on the same way (how did you made the two elements $list array?)
$secondElement = array('a'=>'abc', 'b'=>'bcd');
$list[] = $secondElement;
// call your function here for two elments array
yourFunc($list)

答案 4 :(得分:0)

结束检查单个元素,如果在底层存在特定的元素(已知仅存在于数组数组中),则执行以下操作:

 $list = Array 
  ( 
    [0] => $list
  ) ;