2011-10-19 184 views
-1

我要创建动态数组动态创建一个基于数字的多维数组PHP多维数组

这里一个数组里面是代码

$meta_box = array( 
'id' => 'my-meta-box', 
'title' => 'Custom Input Fields', 
'page' => 'page', 
'context' => 'normal', 
'priority' => 'high', 
'fields' => array (
        array(//this array must be created dynamic 
         'name' => 'Textarea', 
         'desc' => 'Enter big text here', 
         'id' => 'textarea', //id is textarea + number 
         'type' => 'textarea', 
         'std' => 'Default value' 
       ) 
      ) 
); 

我希望创建动态的最后一个数组以数字表示,如果数字为2,则必须有2个数组,其中具有相同的名称,desc,type,str但是不同的ID。

这可能是一种方式吗?

$meta_box = array 
(
    'id' => 'my-meta-box', 
    'title' => 'Custom Input Fields', 
    'page' => 'page', 
    'context' => 'normal', 
    'priority' => 'high', 
    'fields' => array() 
); 


$dynamicNumber = 2; 
$idPrefix = 'textarea'; 
assert('$dynamicNumber > 0'); 
$dynamicIds = range(1, $dynamicNumber); 

$fields = &$meta_box['fields']; 
foreach($dynamicIds as $id) 
{ 
    $fields[] = array(//this array must be created dynamic 
         'name' => 'Textarea', 
         'desc' => 'Enter big text here', 
         'id' => sprintf('%s%d', $idPrefix, $id), //id is textarea + number 
         'type' => 'textarea', 
         'std' => 'Default value' 
       ); 
} 
unset($fields); 

Demo

+2

您是否尝试过使用循环创建数组? – Jon

+0

你能给我一个例子,说明原因如何真的卡住 –

+0

显示你有的代码,并告诉我们你期望它做什么。 – Jon

回答

5

就动态地遍历ID的数量将它们添加'动态'阵列如下:

$number = 2; 
for ($i = 1; $i <= $number; $i++) { 
    $meta_box['fields'][] = array(
    'name' => 'Textarea', 
    'desc' => 'Enter big text here', 
    'id' => 'textarea_' . $i, //id is textarea + number 
    'type' => 'textarea', 
    'std' => 'Default value' 
); 
} 

这将开始编号为1的ID号直到$号码。

0

首先创建数组$ meta_box如下:

$meta_box = array( 
    'id' => 'my-meta-box', 
    'title' => 'Custom Input Fields', 
    'page' => 'page', 
    'context' => 'normal', 
    'priority' => 'high', 
    'fields' => array() 
); 

然后你就可以添加

2

这里的每个“字段”子阵列添加为新的阵列到更大的阵列的方式

$meta_box = array( 
'id' => 'my-meta-box', 
'title' => 'Custom Input Fields', 
'page' => 'page', 
'context' => 'normal', 
'priority' => 'high'); 

$fields = array(); 

$numberOfArrays = 2; 

for($i = 1; $i <= $numberOfArrays; $i++){ 
    $fields[$i] = array (
        array(//this array must be created dynamic 
         'name' => 'Textarea', 
         'desc' => 'Enter big text here', 
         'id' => 'textarea' . $i, //id is textarea + number 
         'type' => 'textarea', 
         'std' => 'Default value' 
       ) 
      ); 
} 

$meta_box['fields'] = $fields; 

echo '<pre>'; 
print_r($meta_box); 
echo '</pre>'; 

你会得到这样的输出在浏览器中:

Array 
(
    [id] => my-meta-box 
    [title] => Custom Input Fields 
    [page] => page 
    [context] => normal 
    [priority] => high 
    [fields] => Array 
     (
      [1] => Array 
       (
          [name] => Textarea 
          [desc] => Enter big text here 
          [id] => textarea1 
          [type] => textarea 
          [std] => Default value 
       ) 
     [2] => Array 
       (
          [name] => Textarea 
          [desc] => Enter big text here 
          [id] => textarea2 
          [type] => textarea 
          [std] => Default value 
       ) 
     ) 
) 

Demo