Give a values for array keys PHP

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

This is print:

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

I want to give values for the $columns array to be like this:

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

I have try to make something like this:

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

But it's not working it merges the two arrays and print this:

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

The code that prints the final result is this:

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

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

You appear to be adding new keys and values to an array that already holds values.

If you want to create a new array with values from one as keys, and values from another as the values, use array_combine.

You can also just re-assign to your original array.

<?php

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

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

var_export($result);

Output:

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

To turn values into keys, you can use array_flip.

If i understood you correctly you want to add these data

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

to the columns name that you mention

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

so it would be something like this one

$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 = [];
$columns['title']       = 'Subject';
$columns['client']      = 'Requester';
$columns['date']        = 'Requested';
$columns['roduct']      = 'Product';
$columns['status']      = 'Status';
print_r($columns);

You want an associative array

An associative array is an array that has associative keys, e.g. strings for keys.

There are multiple ways of creating these, here is one way:

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

Alternatives:

The short-hand for creating an array is using square brackets:

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

This will do the exact same thing but you reference an array using array() rather than []:

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