我对php不是很有经验,我正在尝试学习一些基础知识。这里我有一个包含序列号的数组。我希望当输入与序列号匹配时,序列号将从数组中删除。
我相信这段代码能够实现它。但我的问题是设置它。
当有人访问我的网站时我想要它。
将somekey作为数据发送到php脚本然后验证。如何实现这一目标?
<?php
$serialnumbers= array('2r3ewfasd', '21rfsasad', '34t3rfdsas');
foreach ($serialnumbers as $number) {
if(($key = array_search($number, $serialnumbers )) !== false) {
unset($messages[$number]);
die("found");
} else {
die("not found.");
}
}
?>
答案 0 :(得分:4)
要删除查询字符串中指示的key
,您可以执行以下操作
$userkey=$_GET['key'];
$serialnumbers= array('2r3ewfasd', '21rfsasad', '34t3rfdsas');
if( in_array( $userkey, $serialnumbers ) ){
array_splice( $serialnumbers, array_search( $userkey, $serialnumbers ), 1 );
}
我不确定为什么你认为找不到的值没有从数组中删除。考虑以下测试
/* utility function */
function pre($data){
echo '<pre>',print_r($data,true),'</pre>';
}
$serialnumbers= array('2r3ewfasd', '21rfsasad', '34t3rfdsas');
/* Show original data in array */
pre($serialnumbers);
/* set a variable with user supplied `key` parameter */
$userkey=$_GET['key'];
/* search for and remove `$key` from original array */
if( in_array( $userkey, $serialnumbers ) ){
array_splice( $serialnumbers, array_search( $userkey, $serialnumbers ), 1 );
}
/* Show array after operation */
pre($serialnumbers);
/* pseudo test url used */
#https://localhost/test/?key=34t3rfdsas
/* output */
Array
(
[0] => 2r3ewfasd
[1] => 21rfsasad
[2] => 34t3rfdsas
)
Array
(
[0] => 2r3ewfasd
[1] => 21rfsasad
)
答案 1 :(得分:1)
array_search
函数已遍历您的数组,所以不要自己动手,至于你的问题,$_GET[<name of your variable>]
应该使用:
<?php
$number = $_GET['key'];
$serialnumbers= array('2r3ewfasd', '21rfsasad', '34t3rfdsas');
if(($key = array_search($number, $serialnumbers )) !== false) {
unset($messages[$number]);
die("found");
}else{
die("not found.");
}
?>
答案 2 :(得分:1)
不要解释为什么您的代码不起作用,请考虑:
if
但这样做的努力会更少(当你在阵列中有超过3个项目时,要快得多):
overflow-x: scroll;
overflow-y: hidden;