如何消除PHP代码中的重复?
是否有一种方法可以检查所有这些值,而不必对所有这些if语句进行编码,然后获取最后一个值,例如在本代码示例中如何消除PHP代码中的重复?,php,Php,是否有一种方法可以检查所有这些值,而不必对所有这些if语句进行编码,然后获取最后一个值,例如在本代码示例中sub10 如何使用PHP实现这一点 下面是PHP代码 if(isset($_GET['sub1'])) { $sub1 = $_GET['sub1']; } if(isset($_GET['sub2'])) { $sub2 = $_GET['sub2']; } if(isset($_GET['sub3'])) { $sub3 = $_GET['sub3']; }
sub10
如何使用PHP实现这一点
下面是PHP代码
if(isset($_GET['sub1'])) {
$sub1 = $_GET['sub1'];
}
if(isset($_GET['sub2'])) {
$sub2 = $_GET['sub2'];
}
if(isset($_GET['sub3'])) {
$sub3 = $_GET['sub3'];
}
if(isset($_GET['sub4'])) {
$sub4 = $_GET['sub4'];
}
if(isset($_GET['sub5'])) {
$sub5 = $_GET['sub5'];
}
if(isset($_GET['sub6'])) {
$sub6 = $_GET['sub6'];
}
if(isset($_GET['sub7'])) {
$sub7 = $_GET['sub7'];
}
if(isset($_GET['sub8'])) {
$sub8 = $_GET['sub8'];
}
if(isset($_GET['sub9'])) {
$sub9 = $_GET['sub9'];
}
if(isset($_GET['sub10'])) {
$sub10 = $_GET['sub10'];
}
您可以使用
for
循环检查参数:
for ($i=1; $i<10; ++$i) {
if (isset($_GET['sub'.$i])) {
${'sub'.$i} = $_GET['sub'.$i];
}
}
您可以使用
for
循环检查参数:
for ($i=1; $i<10; ++$i) {
if (isset($_GET['sub'.$i])) {
${'sub'.$i} = $_GET['sub'.$i];
}
}
更优雅的解决方案是使用数组和foreach语句。更优雅的解决方案是使用数组和foreach语句。/foo.php?sub=1,2,3,4,5
$subs = explode(',', $_GET['sub']);
然后您可以从$subs[count($subs)-1]
或数组\u pop($subs)
或您喜欢的其他方式获取最后一个值。/foo.php?sub=1,2,3,4,5
$subs = explode(',', $_GET['sub']);
然后,您可以从
$subs[count($subs)-1]
或数组\u pop($subs)
或您喜欢的其他方式获取最后一个值。强制变量版本:
$keys = preg_grep('/^sub\d+$/', array_keys($_GET));
foreach ($keys as $key) {
$$key = $_GET[$key];
}
好的一面是:不需要循环到PHP_MAX_INT,因为它只对真正存在的东西起作用。下边。。。变量。强制性变量版本:
$keys = preg_grep('/^sub\d+$/', array_keys($_GET));
foreach ($keys as $key) {
$$key = $_GET[$key];
}
好的一面是:不需要循环到PHP_MAX_INT,因为它只对真正存在的东西起作用。下边。。。变量。这里有一个更合理的解决方案: 演示: 网址: 代码:
这里有一个更合理的解决方案: 演示: 网址: 代码:
最简单的方法是使用
sub[]
元素制作表单,如下所示:
Sub 1 <input type="text" name="sub[]" />
Sub 2 <input type="text" name="sub[]" />
Sub 3 <input type="text" name="sub[]" />
Sub 4 <input type="text" name="sub[]" />
Sub 5 <input type="text" name="sub[]" />
sub1
次级2
子3
子4
子5
PHP将把所有这些组合成一个数组
然后,要得到最后一个,它应该是$\u get['sub'][-1]
编辑:这与NullUserException所做的基本相同,但他直接在url中而不是在表单中进行编辑。最简单的方法是使用
sub[]
元素创建表单,如下所示:
Sub 1 <input type="text" name="sub[]" />
Sub 2 <input type="text" name="sub[]" />
Sub 3 <input type="text" name="sub[]" />
Sub 4 <input type="text" name="sub[]" />
Sub 5 <input type="text" name="sub[]" />
sub1
次级2
子3
子4
子5
PHP将把所有这些组合成一个数组
然后,要得到最后一个,它应该是$\u get['sub'][-1]
编辑:这与NullUserException所做的基本相同,但他是直接在url中而不是在表单中执行的。我试图用
提取
找到一个解决方案,但它变得非常复杂:
extract(array_intersect_key($_GET, array_flip(array_map(function ($i) { return 'sub' . $i; }, range(1, 10)))));
有没有办法缩短这个时间
这里有一个格式化版本:
extract(
array_intersect_key(
$_GET,
array_flip(
array_map(
function ($i) {
return 'sub' . $i;
},
range(1, 10)
)
)
)
);
它的作用:创建一个数字从1到10的数组,在其前面加上
sub
,将数组转过来(使变量名现在位于数组的键中),然后与$\u GET
数组相交。因此,只有sub1..10被提取出来。我试图用提取出一个解决方案,但它变得非常复杂:
extract(array_intersect_key($_GET, array_flip(array_map(function ($i) { return 'sub' . $i; }, range(1, 10)))));
有没有办法缩短这个时间
这里有一个格式化版本:
extract(
array_intersect_key(
$_GET,
array_flip(
array_map(
function ($i) {
return 'sub' . $i;
},
range(1, 10)
)
)
)
);
它的作用:创建一个数字从1到10的数组,在其前面加上sub
,将数组转过来(使变量名现在位于数组的键中),然后与$\u GET
数组相交。因此,只提取sub1..10。正如dmags所说,我更喜欢使用数组(我经常使用它)。如果您有不同的变量名(如名称、地址、城市、国家、邮政编码等),它会更优雅(IMHO),也会起作用
正如dmags所说,我更喜欢使用数组(我经常使用它)。如果您有不同的变量名(如名称、地址、城市、国家、邮政编码等),它会更优雅(IMHO),也会起作用
我会将变量赋值改为$sub=$\u GET[…]
;我认为OP想要得到最后一个。如果任何'subX'
不可用,该循环将停止…这似乎与上面的代码行为不同。这肯定是疯了。在我的系统中,PHP_INT_MAX是9223372036854775807,我会将该变量赋值更改为$sub=$\u GET[…]
;我认为OP想要得到最后一个。如果任何'subX'
不可用,该循环将停止…这似乎与上面的代码行为不同。这肯定是疯了。在我的系统上,PHP_INT_MAX是9223372036854775807。或者,你可以做一些类似于/foo.PHP?sub[]=1&sub[]=2&sub[]=3&sub[]=4&sub[]=5
,尽管它有点冗长,只为你保存一个PHP命令。或者,你可以做一些类似于/foo.PHP?sub[]=1&sub[]=2&sub[]=3&sub[]=4&sub[]=5
,虽然它有点冗长,只为您保存了一个php命令。Duplicate of、.Duplicate of、。