Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中获取echo中的第二个值?_Php_Html_Conditional Statements_Echo - Fatal编程技术网

如何在PHP中获取echo中的第二个值?

如何在PHP中获取echo中的第二个值?,php,html,conditional-statements,echo,Php,Html,Conditional Statements,Echo,我有一些选项可供选择,并希望根据用户的选择将一些文本输入设置为可见或隐藏。我已经具备了该功能,但在这种情况下,我需要获取echo的第二个值并检查其是否等于某个值,我目前只能检查echo的第一个值: <select id="type_id" name="device_type_id" onchange="if (this.value==''){this.form['device_imei_textinput'].style.visibility='hidden'}else{this.form

我有一些选项可供选择,并希望根据用户的选择将一些文本输入设置为可见或隐藏。我已经具备了该功能,但在这种情况下,我需要获取echo的第二个值并检查其是否等于某个值,我目前只能检查echo的第一个值:

<select id="type_id" name="device_type_id" onchange="if (this.value==''){this.form['device_imei_textinput'].style.visibility='hidden'}else{this.form['device_imei_textinput'].style.visibility='visible'};">
   <option value='Select'>Select</option>
   <?php foreach ($result as $row) { ?>
     <option value="<?php echo $row['id'] . $row['serial_or_imei'] ?>"> <?php echo $row['name']; ?> </option>;
   <?php } ?>
</select>

挑选
;
因此,我只需要获取
$row['serial\u or\u imei']
的值,然后比较
onchange=“如果(this.value='')
,我该怎么做呢

编辑:进一步解释

我需要读取
$row['serial\u或\u imei']
的值,它可以是空的,'serial'或'imei',因此,这三个值中的一个。
注:我必须将
$row['id']
保留在
value
属性中,因为我稍后会将该值传递给服务器,所以不建议删除该值。

您添加一个新的自定义属性

serial
并向其提供
serial\u或\u imei
的值,然后在javascript中与
onchange=“if(this.value='')进行比较


挑选
;

编辑:元素“option”上不允许有属性“serial”。将此更改为数据seial。

您可以通过将值分配给变量(格式非常简洁,如下所示),在
onchange
中比较数组的值

<?php $value = echo $row['serial_or_imei']; ?>
<select id="type_id" name="device_type_id" onchange="if (this.value=='<?php empty($value)?>'){this.form['device_imei_textinput'].style.visibility='hidden'}else{this.form['device_imei_textinput'].style.visibility='visible'};">
   <option value='Select'>Select</option>
   <?php foreach ($result as $row) { ?>
     <option value="<?php echo $row['id'] . $row['serial_or_imei'] ?>"> <?php echo $row['name']; ?> </option>;
   <?php } ?>
</select>

;

您可以向
选项元素添加
一个属性
,并使用它进行测试。差不多

<select id="type_id" name="device_type_id" onchange="if (this.getAttribute('data')==''){this.form['device_imei_textinput'].style.visibility='hidden'}else{this.form['device_imei_textinput'].style.visibility='visible'};">
   <option value='Select'>Select</option>
   <?php foreach ($result as $row) { ?>
     <option data="<?php echo $row['serial_or_imei'] ?>" value="<?php echo $row['id'] . $row['serial_or_imei'] ?>"> <?php echo $row['name']; ?> </option>;
   <?php } ?>
</select>

挑选
;

您说需要将值返回到服务器,因为它们是动态变化的。一个干净的方法是有一个专用的隐藏字段:

<?php foreach ($result as $row) { ?>
    <input type="hidden" name="map[<?php echo $row['id']; ?>]" value="<?php echo $row['serial_or_imei']; ?>">
<? } ?>


根据评论中的信息,我认为这个解决方案正是您所寻找的。注意:为了清晰起见,我将
onchange
移动到一个函数

您可以看到“三”选项隐藏了文本输入,因为它没有
imei

还要注意我是如何在您的选项中使用
data-
属性的,这样您也可以检索该信息,而不依赖于选项
id
。还要注意,
this.form['device\u imei\u textinput']
不起作用。需要
元素
参考

功能检查\u imei(obj,表格){
var imei=obj.options[obj.selectedIndex].getAttribute('data-imei');
如果(imei=''){
form.elements.device_imei_textinput.style.visibility='hidden';
}否则{
form.elements.device_imei_textinput.style.visibility='visible';
}  
}

挑选
一个
两个
三


如果您的
id
serial\u或\u imei
都是数字,那么理想情况下,您应该使用任何分隔符来准备它。您也可以将
$row['serial\u或\u imei']
的值分配给不同的属性,然后进行比较。@swantrakumar它们都不是数字,serial\u或\u imei实际上是字符串,也可以是空的。如果您的意思是动态的,如“在每个页面上加载ID-imei关系更改”,我只需添加一个专用的隐藏字段,名为
ID\u serial\u或\u imei\u map
。一个清晰的最终结果示例可能会帮助您。通过阅读本文,我们不清楚您想要达到什么目的。不,抱歉误解,我不想比较,我想检查
$row['serial\u或\u imei']
的值,您能再解释一遍吗?我想检查
$row['serial\u或\u imei']
中是否为空或包含字符串
onchange=“if(this.value='')
Ok为此,您可以使用空函数查看我编辑的答案。设置
$row['serial\u或\u imei'值的方式
$value
这完全是错误的,你知道吗?你甚至没有在那里赋值。你不能添加自定义属性你的自定义属性应该是
数据序列
而不是
序列
才能成为有效的HTML。不,如果我添加自定义属性,它会打印该属性的值而不是值,一个d我不想那样。@rtzr没有让您通过,无法添加自定义属性。@LouisCharette很好。元素“option”上不允许使用属性“serial”。修改了它。我尝试过,但它会打印该值,而不是属性
值的值
,但是,我需要检查用户选择了什么来更改这两个组件的可见性,并且您的代码会执行其他操作。基本上,我需要
$row['id']
在提交时将其发送到服务器,以及
$row['serial\u或\u imei']
根据
$row['serial\u或\u imei']
的值,将一些文本输入的可见性设置为可见或隐藏。因此有两种不同的方式。我编辑了我的答案以显示如何读取imei。要显示和隐藏HTML元素,可以使用CSS(
显示:无
);那是另一个主题。不,你漏掉了$row['id']我说我在其他地方使用它,所以不要删除它。你仍然可以将它放在
值中
。我从这个示例中删除了所有PHP,以使代码段正常工作。在这种情况下,选项将是
请参见编辑以获得更好的格式。如果这不能解决关于行id的问题,请进一步解释t您不想实现关于
id
的目标。
<?php foreach ($result as $row) { ?>
    <input type="hidden" name="map[<?php echo $row['id']; ?>]" value="<?php echo $row['serial_or_imei']; ?>">
<? } ?>
<?php

$random_serial_or_imei = range(1000, 9999);
shuffle($random_serial_or_imei);

$result = [];
for ($i = 0; $i < 5; $i++) {
    $result[] = [
        'id' => $i,
        'serial_or_imei' => $random_serial_or_imei[$i],
        'name' => "Name #$i",
    ];
}

?>
<select name="device_type_id">
    <option value="">Select</option>
    <?php foreach ($result as $row) { ?>
        <option value="<?php echo $row['id']?>"><?php echo $row['name']; ?></option>
    <?php } ?>
</select>

<?php foreach ($result as $row) { ?>
    <input type="hidden" name="map[<?php echo $row['id']; ?>]" value="<?php echo $row['serial_or_imei']; ?>">
<? } ?>
<select name="device_type_id">
    <option value="">Select</option>
            <option value="0">Name #0</option>
            <option value="1">Name #1</option>
            <option value="2">Name #2</option>
            <option value="3">Name #3</option>
            <option value="4">Name #4</option>
    </select>

    <input type="hidden" name="map[0]" value="9513">
    <input type="hidden" name="map[1]" value="3931">
    <input type="hidden" name="map[2]" value="3971">
    <input type="hidden" name="map[3]" value="4476">
    <input type="hidden" name="map[4]" value="6429">