代码之家  ›  专栏  ›  技术社区  ›  Brook Julias

如何从$后置数组返回特定的键?

  •  0
  • Brook Julias  · 技术社区  · 15 年前

    我想检查一下$_post中是否有包含字符串的键。字符串不是完整的键,而是键的一部分。(即search string=“delrowid”,$\u post key=“delrowid_16”)。我尝试过使用数组键($\u post,“delrowid”),但它从未返回任何内容。

    代码

    print_r($_POST);
    print_r(array_keys($_POST,"delRowID"));
    

    收益率

    Array ( [delRowID] => 29 [qAction] => [elmUpdateId] => [elmTtl] => [elmDesc] => [elmStr] => ) Array ( )
    
    5 回复  |  直到 15 年前
        1
  •  1
  •   Powerlord    15 年前

    如果这是由表单发送的,则考虑将元素命名为数组元素。例如,

    <input type="checkbox" name="delRowID[16]" />
    <input type="checkbox" name="delRowID[17]" />
    

    将作为一个名为 $_POST['delRowID'] 为每个有效输入添加元素。

    然而,这是一个精心设计的示例,可以更好地与其他输入类型一起工作。

    对于复选框,最好这样做,这样可以创建一个数组,其中每个成功的复选框都有一个值,您可以轻松地循环:

    <input type="checkbox" name="delRowID[]" value="16" />
    <input type="checkbox" name="delRowID[]" value="17" />
    

    参见: How do I create arrays in a HTML <form>?

        2
  •  1
  •   Mads Mogenshøj    15 年前

    使用循环 array_keys() 检查钥匙 strpos()

    foreach (array_keys($_POST) as $key) {
      if (strpos($key, 'delRowId') === 0) {
        echo $key." found!";
      }
    }
    
        3
  •  0
  •   Jeff    15 年前

    循环使用提供给您的密钥 array_keys($_POST) . 对每个都做一个字符串匹配。

    另外,请注意 array_keys($_POST,"delRowID") 搜索与值“delrowid”关联的键。

        4
  •  0
  •   Sarfraz    15 年前

    因为您正在搜索部分文本,所以可以循环使用它:

    foreach($_POST as $key => $value)
    {
      if (strpos($key, 'delRowID') !== false)
      {
        echo $key;
        break;
      }
    }
    
        5
  •  0
  •   Dan Heberden    15 年前

    另一种方法(扩展MADS答案):

    if( getKey( 'delRowId', $_POST ) ){
        // delRow?
    }
    
    function getKey($stringToFind, $array) {
      foreach ($_POST as $key => $val) {
        if (strpos($stringToFind, $key) !== false) {
         return $val;
        } 
      }
      return false;
    }