PHP – Foreach Pass-by-Reference ? Do it now!

Normally, when we are using the “Pass-By-Reference” in the foreach block we write code like below..

foreach ($array as &$row) {
// we Just Do Our stuff
}

We Must Have to “Unset” when we use “Pass-by-Reference”. Otherwise the array data may be altered. So, BEWARE.!

foreach ($array as &$row) {
// We Just Do Our stuff

// Now Unset after the Stuff
unset($row);
}

Don’t forget to “unset” the reference variable after the loop.

//---------------------------------
// Normally we do
//---------------------------------

$main_array = array('1','2','3','4');
$sub_array = array('11','22','33','44');


print_r($main_array);

print_r($sub_array);


/*
# Actual Array Data:
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)
*/

$main_text = "";
foreach($main_array as &$row) {
    $main_text .= $row.',';

}

$sub_text = "";
foreach($sub_array as $row) {
    $sub_text .= $row.',';
}


print_r($main_array);

print_r($sub_array);



/*

# (main_array) Altered Data:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 44
)

# (main_array) Expected Data:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)
*/

//-------------------------------
//	We Have to Use Like this
//-------------------------------

$main_text = "";
foreach($main_array as &$row) {
    $main_text .= $row.',';

    //Unset the pass-by-reference variable
    unset($row);
}

/*
// Now the Result will not altered

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)
*/

This is because when the second loop executes, $row is still a pass-by-reference variable.
Thus, with each iteration the original reference is overwritten.

Convert stdClass object to array in PHP

Convert stdClass object to array in PHP The easiest way is to JSON-encode your object and then decode it back to an array: $array = json_decode(json_encode($object), True); Or if you prefer, you can traverse the object manually, too: foreach ($object as $value)     $array[] = $value->post_id;

Open and Close a ul after every 3rd li in php

<!DOCTYPE html>
<html lang=”en”>
<head>
  <title>Bootstrap Example</title>
  <meta charset=”utf-8″>
  <meta name=”viewport” content=”width=device-width, initial-scale=1″>
</head>
<body>
<div class=”container”>
  <h2>Basic List Group</h2>
<?php
$products = array(1,2,3,4,5,6,7,8,9,10);
?>
<?php foreach ($products as $key => $prod) { ?>
<?php if( ($key+1)==1 || (($key+1)%3)==1 ) { ?>
<ul class=”list-group”>
<?php } ?>
<li class=”list-group-item”>First item</li>
<?php if( (($key+1)%3)==0 ){ ?>
</ul>
<?php } ?>
<?php } ?>
</div>
</body>
</html>