显示php数组时出现的问题
我对php非常陌生,我正在努力自学php。我有一个数组显示php数组时出现的问题,php,html,arrays,Php,Html,Arrays,我对php非常陌生,我正在努力自学php。我有一个数组 <?php $age=array("A"=>"test", "Arating"=>"37", "B"=>"test2", "Brating"=>"40", "c"=>"test3", "crating"=>"41", "D"=>"test4", "Drating"=>"42"); ?> 始终输入名称:A、B、C、D
<?php
$age=array("A"=>"test",
"Arating"=>"37",
"B"=>"test2",
"Brating"=>"40",
"c"=>"test3",
"crating"=>"41",
"D"=>"test4",
"Drating"=>"42");
?>
始终输入名称:A、B、C、D
text区域:Arating、Brating、Crating、Drating
输出是完全错误的。我对php完全不熟悉,因为您的数组没有优化到可以这样做。从技术上讲,您可以使用模运算符
%
进行一些检查,并将第一个和第二个选项与if语句等结合起来,但这会变得混乱,如果您的项目出现故障,或者希望在将来更改或添加新选项,那么您将非常痛苦
最好将数组重新排列为多维数组,然后在其上循环并按其键名访问每个项。从长远来看,它将使您的代码更易于理解和维护
下面的代码应该更适合您:
<?php
$ages = array(
"A" => [
"val" => "test",
"name" => "Arating",
"num" => "37"
],
"B" => [
"val" => "test2",
"name" => "Brating",
"num" => "40"
],
"C" => [
"val" => "test3",
"name" => "crating",
"num" => "37"
],
"D" => [
"val" => "test4",
"name" => "Drating",
"num" => "40"
]
);
foreach($ages as $key => $age){ ?>
<input name="<?php echo $key ?>" value="<?php echo $age['val'] ?>" id="<?php echo $age['val'] ?>" />
<textarea rows="4" cols="50" name="<?php echo $age['name'] ?>"><?php echo $age['num'] ?></textarea>
<?php } ?>
试试这个:根据您的阵列
<?php
$age=array("A"=>"test",
"Arating"=>"37",
"B"=>"test2",
"Brating"=>"40",
"c"=>"test3",
"crating"=>"37",
"D"=>"test4",
"Drating"=>"40");
?>
<form action="" name="test" method="post">
<?php
$i=0;
foreach($age as $key => $value)
{
if($i%2==0)
{?>
<input name="<?php echo $key ?>" value="<?php echo $value ?>" id="test"/>
<?php
}
else
{?>
<textarea rows="4" cols="50" name="<?php echo $key ?>" ><?php echo $value ?> </textarea>
<?php }
$i++;
} ?>
</form>
试试看
<form action="" name="test" method="post"/>
<?php
foreach($age as $key => $value) {
if(!is_numeric($value) ) {
?>
<input name="<?php echo $key ?>" value="<?php echo $value ?>"
id="test"/>
<?php } else { ?>
<textarea rows="4" cols="50" name="<?php echo $key ?>" >
<?php echo $value ?>
</textarea>
<?php } } ?>
你得到了什么错误?@PrafullaKumarSahu:我无法得到我所期望的形式。这里所有的值都与文本区域和输入字段相呼应。我需要在输入字段和37 40中获得一个B C D…文本区域请帮助我,你是否能够重新构造数组,因为它目前的格式不允许你这样做?@PeterFeatherstone:我该怎么做那?请帮助我为什么输入文本的值必须是动态的,而文本区域的值必须是静态的?使用foreach加上递增有什么意义?你为什么不使用simple for?谢谢你的回复@mayank如果他将来有一个AA
键会发生什么?你所需要做的就是检查键的长度,以确定是否要显示文本区域或输入字段。只要您的键在文本字段中保留1个字符,这将起作用$计数=1;foreach。。。如果(计数=2){count++;endforeach:Thankyew..不重新排列这个数组..我能得到答案吗?我的方法是错误的吗?下面还有其他的答案,但我认为它们很可怕。我担心它们不可维护,也不可扩展,不一定是特定的和复杂的…总是先改进您的数据结构…如果将来没有呢n使用数字值,如空白或未知的字符串表示形式,如NA
?根据当前数组和要求,此逻辑很好,如果以后更改数组,则offcource逻辑将更改。换句话说,此方法既不可维护,也不可扩展
?如果需要更具可扩展性,请重新创建您的数组y为类似以下内容的值:[“名称”=>“A”,“值”=>“测试”,“类型”=>“文本输入”],[“名称”=>“Arating”,“值”=>“37”,“类型”=>“文本区域”],];
@PeterFeatherstone根据当前的阵列结构,只有这种可能性,否则您必须通过另一个$count进行检查。在这些阵列结构上,没有任何可扩展的方法。
<?php
$age=array("A"=>"test",
"Arating"=>"37",
"B"=>"test2",
"Brating"=>"40",
"c"=>"test3",
"crating"=>"37",
"D"=>"test4",
"Drating"=>"40");
?>
<form action="" name="test" method="post">
<?php
$i=0;
foreach($age as $key => $value)
{
if($i%2==0)
{?>
<input name="<?php echo $key ?>" value="<?php echo $value ?>" id="test"/>
<?php
}
else
{?>
<textarea rows="4" cols="50" name="<?php echo $key ?>" ><?php echo $value ?> </textarea>
<?php }
$i++;
} ?>
</form>
<form action="" name="test" method="post"/>
<?php
foreach($age as $key => $value) {
if(!is_numeric($value) ) {
?>
<input name="<?php echo $key ?>" value="<?php echo $value ?>"
id="test"/>
<?php } else { ?>
<textarea rows="4" cols="50" name="<?php echo $key ?>" >
<?php echo $value ?>
</textarea>
<?php } } ?>
<?php
$age = [
"A" => "test",
"Arating" => "37",
"B" => "test2",
"Brating" => "40",
"c" => "test3",
"crating" => "41",
"D" => "test4",
"Drating" => "42"
];
?>
<form action="" name="test" method="post"/>
<?php
foreach ($age as $key => $value) {
if (strlen($key) == 1) { ?>
<input name="<?php echo $key ?>" value="<?php echo $value ?>" id="<?=$value;?>"/>
<?php } else { ?>
<textarea rows="4" cols="50" name="<?php echo $key ?>"><?php echo $value ?></textarea>
<?php } ?>
<?php } ?>
<?php
$count = 1;
foreach ($age as $key => $value) {
if ($count == 1) { ?>
<input name="<?php echo $key ?>" value="<?php echo $value ?>" id="<?= $value; ?>"/>
<?php } elseif($count==2) { ?>
<textarea rows="4" cols="50" name="<?php echo $key ?>"><?php echo $value ?></textarea>
<?php } ?>
<?php
if ($count == 2) {
$count = 0;
}
$count++;
?>
<?php } ?>
<?php
$age = [
[
'name' => 'A',
'value' => 'test',
'type' => 'textInput'
],
[
'name' => 'Arating',
'value' => '37',
'type' => 'textarea'
],
[
'name' => 'B',
'value' => 'test2',
'type' => 'textInput'
],
[
'name' => 'Brating',
'value' => '40',
'type' => 'textarea'
],
[
'name' => 'c',
'value' => 'test3',
'type' => 'textInput'
],
[
'name' => 'crating',
'value' => '41',
'type' => 'textInput'
],
[
'name' => 'D',
'value' => 'test4',
'type' => 'textInput'
],
[
'name' => 'Drating',
'value' => '42',
'type' => 'textInput'
],
];
?>
<form action="" name="test" method="post"/>
<?php
foreach ($age as $key => $value) {
if ($value['type'] == 'textInput') { ?>
<input name="<?php echo $value['name'] ?>" value="<?php echo $value['value'] ?>" id="<?= $value['value']; ?>"/>
<?php } elseif ($value['type'] == 'textarea') { ?>
<textarea rows="4" cols="50" name="<?php echo $value['name'] ?>"><?php echo $value['value'] ?></textarea>
<?php } ?>
<?php } ?>