I am self-learning php and I want to ask if am I reading this part of code correctly? If
powers is not empty, than make array
from values
, also each power
will act like power_id
. But $values[]
is same as array_pust()
? And sprintf('(%d, %d)'
will put decimal numbers to character_id and power?
$character_id = mysql_insert_id($db);
if(!empty($_POST['powers'])) {
$values = array();
foreach ($_POST['powers'] as $power_id) {
$values[] = sprintf('(%d, %d)', $character_id, $power_id);
}
Almost as you described. array_push()
can add multiple values at once, whereas single square bracket notation pushes one value onto the end of the array.
$_POST['powers']
contains an array of values, so the foreach
loop will iterate through these elements, and it refers to each element as $power_id
within the loop.
$values = array()
isn't strictly neccesary in this example, however it does declare $values
to be an empty array, so makes the code clearer to understand. If you omit this line, PHP will deduce you wish to initialise an array when you first assign a value to it inside your foreach
loop.