Originally published on php-to-js.learnio.dev — part of the PHP to JavaScript course. View this lesson on the original site.

Objects hold keyed data — PHP associative arrays, different syntax

When you reach for ['key' => 'value'] in PHP, you usually want a JavaScript object. Property access uses dots for fixed keys and brackets for dynamic keys.

PHP habit: associative array

<?php
$user = [
    'id' => 1,
    'name' => 'Alice',
    'role' => 'admin',
];

echo $user['name'];
$user['active'] = true;

$key = 'role';
echo $user[$key];

foreach ($user as $field => $value) {
    echo "$field: $value\n";
}

if (array_key_exists('email', $user)) {
    echo "has email\n";
}

JavaScript equivalent

const user = {
  id: 1,
  name: 'Alice',
  role: 'admin',
};

console.log(user.name);
user.active = true;

const key = 'role';
console.log(user[key]);

for (const [field, value] of Object.entries(user)) {
  console.log(`${field}: ${value}`);
}

if ('email' in user) {
  console.log('has email');
}
PHP JavaScript Notes
['k' => $v] { k: v } Object literal
$obj['name'] obj.name or obj['name'] Dot when key is a valid identifier
$obj[$key] obj[key] Brackets for dynamic keys
foreach ($obj as $k => $v) Object.entries(obj) Iterate key-value pairs
array_key_exists('k', $obj) 'k' in obj Key presence
isset($obj['k']) obj.k !== undefined Value may still be undefined

Arrays vs objects — do not mix them up

<?php
$list = [1, 2, 3];
$map = ['a' => 1, 'b' => 2];
// both are array type in PHP
const list = [1, 2, 3];
const map = { a: 1, b: 2 };

console.log(Array.isArray(list)); // true
console.log(Array.isArray(map));  // false

Use arrays for ordered lists. Use objects for records with named fields (user, config, API payload).

Shorthand when variable names match keys

const name = 'Alice';
const role = 'admin';
const user = { name, role };  // same as { name: name, role: role }

PHP 8.1+ has similar shorthand in array literals: ['name' => $name].

Try it

Use the amber Try it panel below. Click Run.

const product = { sku: 'BOOK-01', title: 'Learn JS', price: 24.99 };
product.inStock = true;

const field = 'title';
console.log(product[field]);

for (const [key, value] of Object.entries(product)) {
  console.log(key, '=', value);
}

Same data you would pass as a PHP associative array to a view or JSON encoder — different syntax, same shape.

From PHP to JavaScript — JavaScript Syntax Foundations for PHP Devs