0

I got a simple Question. I use the expression <?=a_function();?> very often in my system but each and every time it shows "1" on my page when a_function() returns true. What else can I do? I heard I should always return something but whats this with this 1?

Stef
  • 151
  • 1
  • 9
  • = is perfectly valid shorthand for echoing. – David Wyly May 07 '15 at 21:18
  • 1
    Please see [this post](http://stackoverflow.com/questions/12139200/get-status-function-returns-1-instead-of-true-or-false-why) - "1" is how php converts true to string. – wahwahwah May 07 '15 at 21:18

2 Answers2

4

1 or 0 is a boolean, which is equivalent to true or false.

PHP Manual

How does true/false work in PHP?

Also, if you just want to run the function without outputting anything, just use <?php a_function(); ?>

Community
  • 1
  • 1
David Wyly
  • 1,671
  • 1
  • 11
  • 19
  • what if i want to use =?> without getting 1 in return? shall i create a function withour return true? – Stef May 07 '15 at 21:51
  • No. `= a_function(); ?>` is the direct equivalent of writing ``. The `=` is supposed to be a shorthand alternative for echoing whatever was returned. Use ` – David Wyly May 07 '15 at 21:58
  • and would you say its mandatory to declare a result? – Stef May 07 '15 at 22:13
  • It's good practice to return either a value, `true`, or `false`/`null` from a function. If you're not returning anything, returning `true` or a value designates that the function was successful; returning `false` or `null` designates that something within the function did not properly validate. – David Wyly May 07 '15 at 22:16
  • and `return;` is bad practice? – Stef May 09 '15 at 08:18
  • Long story short, if the function is successful, you want to return either the value you're returning or `true`. If the function is not successful, returning `false` is best practice. PHP is a loosely typed language, so it's good to be able to consistently use the `===` operator to check for a return of `false`. This will help avoid issues where a return of `null` or `0` could issue a false-positive during validation checks using the `==` operator. I suggest this thread: http://stackoverflow.com/questions/9643080/what-is-the-php-best-practice-for-using-functions-that-return-true-or-false – David Wyly May 11 '15 at 15:19
1

What is the point of what you're doing?
I have'nt understand it,but I think the a_function(); returns the integer value of a boolean expression.
a boolean expression is always 1 or 0 that 1=true and 0=false.
For Example,in PHP if you type 1==0;,It will return false and if you echo it as an integer,it'll print 0.
also,you are using = in you're code.delete it and you're page will show nothing.

marc_s
  • 455
  • 1
  • 4
  • 15
  • for instance `a_function($message);` loads a message from the database and "echos" it. if i return true it'll show the message and a 1.. – Stef May 09 '15 at 08:17