将一个关联数组转换为索引数组 / 获取非关联的Zend_Table_Row_Abstract

62

大家好,我想知道有没有一种函数或简便的方法可以将关联数组转换为索引数组。

具体来说,我正在使用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()返回一个非关联数组也可以实现,但我觉得这不可能。谢谢你的帮助!

4个回答

189

使用纯PHP可以吗?

$array = array_values($array);

源代码


如果初始数组是从odbc_fetch_array生成的,我能否相信array_values始终遵守结果集的正确列顺序?看起来我可以。 - Lonnie Best

6

定义函数

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

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


1
您能否提供一下您的代码是如何解决问题的简要说明或解释? - Illidanek
只需将关联数组作为参数传递,它就会转换为数组的默认索引。例如:我们有Array('2014-04-30'=>43,'2014-04-29'=>41),调用函数后数组将变为Array(0=>43,1=>41)。 - user3567805
这个逻辑很有用。 - Vrushal Raut

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  
        )

0
如果您不想使用内置的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);

这是每个人都会使用的基本解决方案,但我想问题的意思是是否有更好的方法。 - Benjamin Eckstein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接