显示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非常陌生,我正在努力自学php。我有一个数组

<?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 } ?>