如何在php中使用foreach里面的数组?

时间:2014-04-18 12:58:53

标签: php arrays foreach

我想在数组中做foreach。 我正在尝试使用数组值生成选择框当我手动给出值时,一切似乎都正常。

array(
    'name' => __('Testing Selection', 'test'),
    'id' => 'testing',
    'css' => 'min-width:150px;',
    'std' => '2', 
    'default' => '2',
    'type' => 'select',
    'options' => array(
        '1' => __('Test1', 'test'),
        '2' => __('Test2', 'test'),
        '3' => __('Test3', 'test'),
    ),
),

在上面的代码中,选项键包含三个值,如1,2,3,上面的代码正在运行。但我想在这里使用foreach循环所有产品ID,但它似乎不适合我可能是我尝试错误的方式。我知道数组中的foreach无效,这就是我尝试这种方式的原因。

$foos = array(
    'name' => __('Testing Selection', 'test'),
    'id' => 'testing',
    'css' => 'min-width:150px;',
    'std' => '2', 
    'default' => '2',
    'type' => 'select',
    'options' => array(),
),

在阵列之后我做了foreach

$args = array('post_type' => 'product', 'posts_per_page' => '-1');
$getproducts = get_posts($args);

foreach ($getproducts as $product) {
    $foos['options'][] = array(
        $product->ID => $product->get_title,
    );
}

我想在选择框中列出20多个产品手动对我来说很难有人建议我使用foreach里面的数组吗?

3 个答案:

答案 0 :(得分:1)

我不确定你的想法,但试试这个模板:

<select>
<?php
    $items = array(
        'one' => 'Item one',
        'two' => 'Item two',
        'three' => 'Item three'
    );
    foreach(array_keys($items) as $item_id) {
        echo "<option name=\"$item_id\">$items[$item_id]</option>\n";
    }
?>
</select>

答案 1 :(得分:1)

使用array_map()array_reduce()等PHP函数,您可以在数组中创建新数组。 array_map()对于为数组创建值很有用,但是您无法使用它来操作键。因此,我们可以使用array_reduce()来模拟array_map()的行为并创建选项所需的关联数组。

$foos = array(
    'name'      => 'Testing Selection',
    'id'        => 'testing',
    'css'       => 'min-width:150px;',
    'std'       => '2', 
    'default'   => '2',
    'type'      => 'select',
    'options'   => array_reduce( get_posts( 'post_type=product&posts_per_page=-1' ), function( $result, $item ) { 
        $result[$item->ID] = $item->post_title;
        return $result;
    })
);

如果你不喜欢这种方法,你可以创建新函数,返回所需的选项数组,从而提高代码的可读性。

答案 2 :(得分:0)

如果要将数据插入数据库,则应使用foreach键值组合。 这里给出了示例

<?php
if(isset($_POST['submit'])){
    $myArray = array();
    $myArray = array(
        'name' => $_POST['name'],
        'contact' => $_POST['contact'],
        'address' => $_POST['address']
    );

    foreach($myArray as $key=>$value){
        echo $value;
    }
}
?>
<html>
    <head>
    </head>
    <body>
        <form action="#" method="post">
            name<input type="text" name="name"/>
            contact<input type="text" name="contact"/>
            address<input type="text" name="address"/>
            <input type="submit" name="submit"/> 
        </form>
    </body>
</html>