Give a values for array keys PHP

482 Views Asked by At
$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

There are 4 best solutions below

15
Joseph On BEST ANSWER

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

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'
);
0
Progrock On

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.