如何在URL中获取未知$ _GET值的数组?

Fle*_*par 3 php

我正在使用一个在线购物车,它可以获取订购的商品,并通过URL将其唯一ID传递给process.php页面.所以URL看起来像

process.php?code_1=231&code_2=532&code_3=342
Run Code Online (Sandbox Code Playgroud)

code_x=xxx为订购的每件商品生成另一件商品.在process.php页面上,如何在code_x不知道订购了多少项的情况下创建数组来获取值?

Jon*_*Jon 8

通过将表单中的元素名称更改为,可以更好地解决此问题code[].

例如,你现在让我们说

<input type="text" name="code_1" ... />
<input type="text" name="code_2" ... />
<input type="text" name="code_3" ... />
Run Code Online (Sandbox Code Playgroud)

你会改变它

<input type="text" name="code[]" ... />
<input type="text" name="code[]" ... />
<input type="text" name="code[]" ... />
Run Code Online (Sandbox Code Playgroud)

执行此操作后,$_GET['code']将是一个数组,其中包含文本框中的所有值作为其项目.

更新:

如果无法控制传入参数的名称,则需要手动解析.我是这样做的:

// Sample data
$get = array('code_1' => 'foo', 'code_2' => 'bar', 'code_X' => 'X', 'asdf' => 'X');
$codes = array();

foreach($get as $k => $v) {
    // Reject items not starting with prefix
    if (substr($k, 0, 5) != 'code_') {
        continue;
    }

    // Reject items like code_X where X is not all digits
    $k = substr($k, 5);
    if (!ctype_digit($k)) {
        continue;
    }

    $codes[$k] = $v;
}

print_r($codes);
Run Code Online (Sandbox Code Playgroud)