为PHP数组分配索引

时间:2014-07-20 19:35:38

标签: php mysql arrays indexing

我从mysql表中动态提取以下数组,需要为每个元素分配索引。

Array    
(
    [yma] => 65.0000
    [mhip] => 65.0000
    [tzp] => 40.0000
    [mzp] => 45.0000
    [su] => 40.0000
    [tkp] => 74.0000
)

这是我的预期输出。

Array    
    (
        [0][yma] => 65.0000
        [1][mhip] => 65.0000
        [2][tzp] => 40.0000
        [3][mzp] => 45.0000
        [4][su] => 40.0000
        [5][tkp] => 74.0000
    )

Array    
        (
            [0] => 65.0000
            [1] => 65.0000
            [2] => 40.0000
            [3] => 45.0000
            [4] => 40.0000
            [5] => 74.0000
        )

如果我想要的输出如下所示,可能会出现以下答案的问题:

Array    
        (
            [0] => 'yma'
            [1] => 'mhip'
            [2] => 'tzp'
            [3] => 'mzp'
            [4] => 'su'
            [5] => 'tkp'
        )

我正在使用此代码来提取数据:

$myarray = array();
while($row = mysql_fetch_array($sql)){
     $myarray[$row['pawl']] = $row['contribution'];
}

如何从MySQL获取/构建数组并生成所需的输出?

3 个答案:

答案 0 :(得分:3)

使用array_values。 “Array_values()返回数组中的所有值,并以数字方式索引数组。”

另外,

$myarray = array();
while($row = mysql_fetch_array($sql)){
     $myarray[] = $row['contribution'];
}

这将指定从0开始的数字索引。

现在,如果您需要特定的数字索引来匹配每个棘爪代码,

然后建立地图:

$map = array    
(
    ['yma'] => 1,
    ['mhip'] => 2,
    ['tzp'] => 3,
    ['mzp'] => 4,
    ['su'] => 5,
    ['tkp'] => 6,
);

重新映射 棘爪代码。

$remappedArray = array();
foreach($myarray as $pawlCode => $value){
    $newIndex = $map[$pawlCode];
    $remappedArray[$newIndex] = $value;
}

您希望如何处理遗失/新代码取决于您。

答案 1 :(得分:2)

为了创建你想要的数组(我将重点关注第二个例子,因为它更合理)你只需要一个函数 - array_values

给出输入数组

Array    
(
    [yma] => 65.0000
    [mhip] => 65.0000
    [tzp] => 40.0000
    [mzp] => 45.0000
    [su] => 40.0000
    [tkp] => 74.0000
)

它将返回一个只有值的数字索引数组,如下所示:

Array    
        (
            [0] => 65.0000
            [1] => 65.0000
            [2] => 40.0000
            [3] => 45.0000
            [4] => 40.0000
            [5] => 74.0000
        )

如果你需要键而不是值,你只需在同一个起始数组上使用array_keys函数(参见上面的输入数组) - 你将获得以下输出:

Array    
        (
            [0] => 'yma'
            [1] => 'mhip'
            [2] => 'tzp'
            [3] => 'mzp'
            [4] => 'su'
            [5] => 'tkp'
        )

PHP有一大套数组函数,一般来说,你很可能找到一个函数来帮助你通过数组获得/做任何你需要的东西。我鼓励您花一些时间在某个时刻浏览these。知道什么是可用的是值得的。

答案 2 :(得分:2)

将它用于您的第一个预期数组:

$myarray = array();
while($row = mysql_fetch_array($sql)){
    $myarray[] = array($row['pawl'] => $row['contribution']);
}

这是你的第二个预期阵列:

$myarray = array();
while($row = mysql_fetch_array($sql)){
    $myarray[] = $row['contribution'];
}