I read the other day that assigning values within if statements isn't such a great idea. To be honest i actually use this quite a lot e.g.
if(isset($_POST) && $post = $_POST) {
print_r($post)
}
Any idea why that isn't optimal?
Not least because it's a common newbie mistake to forget that assignment and equality operators are different, so it can easily lead to confusion or difficult-to-detect bugs.
Readability of your code is more important than any micro-optimisations
if(isset($_POST) && $post = $_POST) is perfectly readable.if condition is expected? I'm open to seeing use cases. Thanks.if ( $found = $this->searchArray( $sites, 'id', $site ) ) as an actual use case scenario in one of my projects. If the function returns a value the $found variable contains everything about the requested set of data and is used (exclusively) within the IF block, otherwise, the code continues. Can't think of any reason to make the code longer by including it one line above and then just using if ( $found ) when it wouldn't be used anywhere else. Can you?Well, being alone, assignment in the logical operator is not that bad:
if ($id = $_GET['id']) {
or
while($row = mysql_fetch_assoc($res)) {
we use pretty often.
Though it's still in danger of readability fault or mixing = and == operators.
But mixing logical and assignment operators in one statement is bad. This is called obfuscation and perl write-only style, makes reading this code harder.
So, it's better to be written as
if(isset($_POST)) {
$post = $_POST;
print_r($post);
}
though this particular statement is pretty senseless.
$_POST is always set in any sensible environment and assigning it to another variable not necessary most of time