将关联数组更改为索引数组/获取 Zend_Table_Row_Abstract 作为非关联

Posted

技术标签:

【中文标题】将关联数组更改为索引数组/获取 Zend_Table_Row_Abstract 作为非关联【英文标题】:Change an associative array into an indexed array / get an Zend_Table_Row_Abstract as non-associative 【发布时间】: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() 返回一个非关联数组也是可行的,但我认为这是不可能的。感谢您的帮助!

【问题讨论】:

【参考方案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) 这个逻辑很有帮助。

以上是关于将关联数组更改为索引数组/获取 Zend_Table_Row_Abstract 作为非关联的主要内容,如果未能解决你的问题,请参考以下文章

从数组中获取特定索引的值名称

MongoDB,将对象数组更改为包含其 ObjectId 的字符串数组

php判断数组是关联数组还是数值数组

php:如何从数字索引中获取关联数组键?

将音频样本的字节数组更改为频率

使数组不递减的最小操作数