【问题标题】:Give a values for array keys PHP为数组键 PHP 提供一个值
【发布时间】:2020-06-11 09:47:37
【问题描述】:
$columns = array( 'title', 'client', 'date', 'product', 'status' );

这是印刷品:

Array
(
    [0] => title
    [1] => client
    [2] => date
    [3] => product
    [4] => status
)

我想给 $columns 数组赋值,如下所示:

Array
(
    [title] => Subject
    [client] => Requester
    [date] => Requested
    [product] => Product
    [status] => Status
)

我尝试过做这样的事情:

$columns['title']       = 'Subject';
$columns['client']      = 'Requester';
$columns['date']        = 'Requested';
$columns['roduct']      = 'Product';
$columns['status']      = 'Status';

但它不起作用,它将两个数组合并并打印:

    Array
(
    [0] => title
    [1] => client
    [2] => date
    [3] => product
    [4] => status
    [title] => Subject
    [client] => Requester
    [date] => Requested
    [product] => Product
    [status] => Status
)

打印最终结果的代码是这样的:

$columns = array( 'title', 'client', 'date', 'product', 'status' );

$columns['title']       = 'Subject';
$columns['client']      = 'Requester';
$columns['date']        = 'Requested';
$columns['roduct']      = 'Product';
$columns['status']      = 'Status';

【问题讨论】:

  • 您用来生成问题中最后一个数组的代码在哪里?
  • 无论如何,你已经回答了你自己的问题,在那里你说“我试图做这样的事情:”,这是有效的 PHP,它实际上会给你想要的结果。跨度>
  • @MarkOverton 请再次检查问题,我已对其进行了编辑。
  • @MarkOverton 来了解我更多让我们说一个函数打印列和另一个函数为它们提供值(人类标题)

标签: php arrays array-key


【解决方案1】:

您似乎正在向已保存值的数组添加新的键和值。

如果您想创建一个新数组,其中一个值作为键,另一个值作为值,请使用array_combine

您也可以重新分配给原始数组。

<?php

$columns = array( 'title', 'client', 'date', 'product', 'status' );
$values  = array('Subject', 'Requestor', 'Requested', 'Product', 'Status');

$result  = array_combine($columns, $values);

var_export($result);

输出:

array (
'title' => 'Subject',
'client' => 'Requestor',
'date' => 'Requested',
'product' => 'Product',
'status' => 'Status',
)

要将值转换为键,您可以使用array_flip

【讨论】:

    【解决方案2】:

    如果我理解正确你想添加这些data

    $data = ['Subject', 'Requester', 'Requested', 'Product', 'Status'];
    

    到您提到的列名称

    $columns = array( 'title', 'client', 'date', 'product', 'status' );
    

    应该是这样的

    $columns = array( 'title', 'client', 'date', 'product', 'status' );
    
    
    function prepareArray($columns){
    
        $humansTitles = [
            'title' => 'Subject',
            'client' => 'Requester',
            'date' => 'Requested',
            'product' => 'Product',
            'status' => 'Status'
        ];
    
        $res = [];
    
        foreach($columns as $col){
            $res[$col] = $humansTitles[$col];
        }
    
        return $res;
    }
    
    print_r(prepareArray($columns));
    

    【讨论】:

    • 是的,你现在理解我了,你的代码运行良好,但有一个问题是列顺序不是静态的,可能会改变,例如:我们必须检查它是否是“标题”,然后给它一个值“主题”你了解我吗?
    • 你能举个例子吗?
    • $columns 的顺序可能会改变它可能是这样的:data, product, title, status, client $columns 的顺序不是静态的。
    • 也许我们可以按字母顺序对其进行排序?
    • 谢谢你,你太棒了!
    【解决方案3】:

    你想要一个关联数组

    关联数组是具有关联键的数组,例如键的字符串。

    创建这些有多种方法,这里是一种方法:

    $columns = [];
    $columns['title'] = 'Subject';
    $columns['client'] = 'Requester';
    $columns['date'] = 'Requested';
    $columns['product'] = 'Product';
    $columns['status'] = 'Status';
    

    替代方案:

    创建数组的简写是使用方括号:

    $columns = [
        'title' => 'Subject', 
        'client' => 'Requester', 
        'date' => 'Requested', 
        'product' => 'Product', 
        'status' => 'Status'
    ];
    

    这将做完全相同的事情,但您使用 array() 而不是 [] 引用数组:

    $columns = array(
        'title' => 'Subject', 
        'client' => 'Requester', 
        'date' => 'Requested', 
        'product' => 'Product', 
        'status' => 'Status'
    );
    

    【讨论】:

    • 你仍然不理解我,我知道这是我的错让我更清楚,我有一个函数可以从用户选项(数据库)中获取数据表的列的顺序和花药函数获取这些订单列并给它们一个值以在前端打印此订单列并带有人类标题。我希望你现在能理解我。
    • 请编辑您的问题并包含此功能。
    【解决方案4】:
    $columns = [];
    $columns['title']       = 'Subject';
    $columns['client']      = 'Requester';
    $columns['date']        = 'Requested';
    $columns['roduct']      = 'Product';
    $columns['status']      = 'Status';
    print_r($columns);
    

    【讨论】:

    • $columns$colums?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    • 2017-04-17
    • 1970-01-01
    相关资源
    最近更新 更多