This time I will bring you a detailed explanation of the implementation steps of in_array implicit conversion in PHP. What are the precautions for the implementation of implicit conversion of in_array in PHP. The following is a practical case. Get up and take a look.
Question
When writing an interface today, you need to pass in a large number of basic information parameters. The parameters are of two types: int and string. For the convenience of verification , I plan to put all the parameters in the array, and then use in_array(0, $param) to determine whether the int parameter is 0, and then separately determine whether the string parameter is empty. The sample code is as follows:
if(in_array(0, $param) || $param['img'] == '') { $this->errorCode = 10030; $this->errorMessage = '参数不正确'; return false; }
But During the self-test, I found that if the correct parameters are passed in, a prompt indicating that the parameters are incorrect will be returned! ! !
Reason
This situation occurs precisely because in_array is causing trouble. in_array(search,array) is equivalent to combining each value in the array with search Comparison, since in addition to the int parameter in my $param array, there is also a string parameter, which is equivalent to using string and int to compare. PHP's implicit conversion rules:
non-numeric characters String is compared with an integer, and the string is automatically converted to int(0)
The following example verifies our statement:
<?php $a = (int)'abc'; var_dump($a); //int(0) $c = array(0,1,2,3); if(in_array('abc', $c)) { echo 'exist'; } else { echo 'not exist'; } //exist
Solution
in_array adds a third parameter true, which is used to check whether the type of the searched data is the same as the value of the array. In this way, the function can only be used when the element exists in the array and the data The type will return true only when it is the same as the given value
For the business I presented above, you can be more rigorous and store int type data in an array and string in an array, two arrays of different types. Perform data verification separately, so that the above problems will not occur
I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the PHP Chinese website!
Recommended reading:
What methods are there in php to output the value of a json object
Alibaba Cloud Win2016 installation of Apache and PHP Detailed explanation of environment tutorial
Detailed explanation of the steps of PHP generation addition and subtraction algorithm
The above is the detailed content of Detailed explanation of the implementation steps of in_array implicit conversion in PHP. For more information, please follow other related articles on the PHP Chinese website!