我正在使用 PHP 和 JSON 資料創建動態多欄位。我面臨的問題是,第一個 foreach 沒有顯示具有相同鍵的資料,例如“文本”欄位,它僅在 foreach 回圈中顯示一個。它應該顯示。
1:帶資料的輸入欄位(輸入文本)
2:帶資料的文本區域欄位
3:帶資料的輸入欄位(輸入文本)
但是當我運行代碼時它只顯示2個欄位。我在哪里弄錯了?如果型別是文本,則如何顯示具有型別的欄位,然后顯示<input type="text" with data>,如果是文本區域,則顯示,<textarea with data></textarea>請有人可以幫助我解決這個問題?
$json_test_data = '
{
"section_1":
[
{
"text":{"class":"mb-20","name":"text","value":"value 1","placeholder":"Section placeholder"}
},
{
"textarea":{"class":"mb-20","name":"section_content","value":"Section content 1","placeholder":"Section Content"}
},
{
"text":{"class":"mb-20","name":"value_2","value":"value 2 value","placeholder":"value 2 placeholder"}
}
]
}';
$json_test = json_decode($json_test_data, true);
$input = '';
if(is_array($json_test))
{
foreach ($json_test as $section => $section_data)
{
echo '<div class="model">';
echo '<div class="model-header d-flex"><h4>'.$section.' Data</h4></div>';
foreach($section_data as $section_fields => $fields_data)
{
foreach($fields_data as $field_key => $field_value)
{
if($field_key == 'text')
{
foreach($field_value as $field_keyy => $field_valuee)
{
$input .= $field_keyy.'="'.$field_valuee.'" ';
}
echo '<input '.$input.'>';
}
}
}
echo '</div>';
}
}
uj5u.com熱心網友回復:
正如 brombeer 所說,您不能兩次使用相同的索引名稱。
$json_test_data = '{
"section_1":[
{
"text":{"class":"mb-20","name":"text","value":"value 1","placeholder":"Section placeholder"}
},
{
"textarea":{"class":"mb-20","name":"section_content","value":"Section content 1","placeholder":"Section Content"}
},
{
"text":{"class":"mb-20","name":"value_2","value":"value 2 value","placeholder":"value 2 placeholder"}
}
]
}';
$json_test = json_decode($json_test_data, true);
foreach ($json_test as $section => $section_data)
{
echo '<div >';
echo '<div ><h4>'.$section.' Data</h4></div>';
foreach ($section_data as $section_fields)
{
foreach ($section_fields as $field_type => $field_data) {
$input = ''; // resetting $input here so it doesnt contain any information from previous row
foreach ($field_data as $field_key => $field_value) {
$input .= $field_key.'="'.$field_value.'" ';
}
if ($field_type == 'textarea') {
echo '<textarea '.$input.'>';
echo $field_data['value'] ?? '';
echo '</textarea>';
} else {
echo '<input '.$input.'>';
}
}
}
echo '</div>';
}
由于 HTML textarea 標簽有點不同,我將它們包裝在 if 條件中。
uj5u.com熱心網友回復:
擁有兩個鍵“文本”將使您只在解碼陣列中輸入最后一個鍵。使您的“section_1”成為一個物件陣列:
<?php
$json_test_data = '{
"section_1":[
{
"text":{"class":"mb-20","name":"text","value":"value 1","placeholder":"Section placeholder"}
},
{
"textarea":{"class":"mb-20","name":"section_content","value":"Section content 1","placeholder":"Section Content"}
},
{
"text":{"class":"mb-20","name":"value_2","value":"value 2 value","placeholder":"value 2 placeholder"}
}
]
}';
相應地調整你foreach的 s。
uj5u.com熱心網友回復:
試試這個代碼,它會作業
<?php $json_test_data = '
{
"section_1":
[
{
"text":{"class":"mb-20","name":"text","value":"value 1","placeholder":"Section placeholder"}
},
{
"textarea":{"class":"mb-20","name":"section_content","value":"Section content 1","placeholder":"Section Content"}
},
{
"text":{"class":"mb-20","name":"value_2","value":"value 2 value","placeholder":"value 2 placeholder"}
}
]
}';
$json_test = json_decode($json_test_data, true);
$input = '';
if(is_array($json_test))
{
foreach ($json_test as $section => $section_data)
{
echo '<div >';
echo '<div ><h4>'.$section.' Data</h4></div>';
foreach($section_data as $section_fields => $fields_data)
{
foreach($fields_data as $field_key => $field_value)
{
if($field_key == 'text')
{
foreach($field_value as $field_keyy => $field_valuee)
{
$input .= $field_keyy.'="'.$field_valuee.'" ';
}
echo '<input '.$input.'>';
} else {
foreach($field_value as $field_keyy => $field_valuee)
{
if($field_keyy == 'value') {
$value = $field_valuee;
} else
{
$input .= $field_keyy.'="'.$field_valuee.'" ';
}
}
echo '<textarea '.$input.'>'.$value.'</textarea>';
}
}
}
echo '</div>';
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/436630.html
