【问题标题】:Change an associative array into an indexed array / get an Zend_Table_Row_Abstract as non-associative将关联数组更改为索引数组/获取 Zend_Table_Row_Abstract 作为非关联
【发布时间】:2010-11-07 02:22:56
【问题描述】:

你好,在斯塔克兰。我想知道是否有一个函数或一种简单的方法可以将关联数组更改为索引数组。

为了详细说明,我使用的是 Zend 框架,并且在我的站点中有一个点,我在其中取出一行 SQL 表作为关联数组。我已经通过 JSON 中的回显将它传递给 javascript。但是,我注意到我可以在 Firebug 中看到我的数据库列的名称。让外人知道你的表和列的名称是一个很大的安全禁忌,所以我想从

SQLarray[user_id]
SQLarray[block_id]
SQLarray[b_price] etc.

SQLarray[0]
SQLarray[1]
SQLarray[2] etc.

有什么好办法吗?

让 Zend_Table_Abstract->fetchAll() 返回一个非关联数组也是可行的,但我认为这是不可能的。感谢您的帮助!

【问题讨论】:

    标签: php zend-framework associative-array associative


    【解决方案1】:

    对于多层数组我使用这个:


    function getIndexedArray($array) {
            $arrayTemp = array();
            for ($i=0; $i < count($array); $i++) { 
                $keys = array_keys($array[$i]);
                $innerArrayTemp = array();
                for ($j=0; $j < count($keys); $j++) { 
    
                    $innerArrayTemp[$j] = $array[$i][$keys[$j]];                
                }
                array_push($arrayTemp, $innerArrayTemp);
            }
            return $arrayTemp;
        }
    

    原来是这样的:

    (
        [0] => Array
            (
              [OEM] => SG
                [MODEL] => Watch Active2
                [TASK_ID] => 8
                [DEPT_ASSIGNED] => Purchashing  
            )
    )
    

    进入这个:

    [0] => Array
            (
              [0] => SG
                [1] => Watch Active2
                [2] => 8
                [3] => Purchashing  
            )
    

    【讨论】:

      【解决方案2】:

      如果您不想使用内置的 PHP 函数,可以使用这段简单的代码。

      $input_array;           // This is your input array
      $output_array = [];     // This is where your output will be stored.
      foreach ($input_array as $k => $v){
          array_push($output_array, $v);
      }
      print_r($output_array);
      

      【讨论】:

      • 这是每个人都会使用的基本解决方案。但我想问题的意思是是否有比这更好的方法。
      【解决方案3】:

      纯php可以吗?

      $array = array_values($array);
      

      Source

      【讨论】:

      • 如果初始数组是从 odbc_fetch_array 生成的,我可以依靠 array_values 来始终遵守结果集的正确列顺序吗?好像可以。
      【解决方案4】:

      定义函数

      function array_default_key($array) {
          $arrayTemp = array();
          $i = 0;
          foreach ($array as $key => $val) {
              $arrayTemp[$i] = $val;
              $i++;
          }
          return $arrayTemp;
      }
      

      将关联数组作为参数传递,它将转换为数组的默认索引。例如:我们有Array('2014-04-30'=&gt;43,'2014-04-29'=&gt;41),在调用函数后数组将是Array(0=&gt;43,1=&gt;41)

      【讨论】:

      • 您能否提供您的代码如何解决问题的描述或简要说明?
      • 只需将关联数组作为参数传递,它就会转换为数组的默认索引。例如:我们有 Array('2014-04-30'=>43,'2014-04-29'=>41) 调用函数后数组将是 Array(0=>43,1=>41)
      • 这个逻辑很有帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-03
      • 1970-01-01
      • 2011-03-22
      相关资源
      最近更新 更多