php array find element

Finding element from array in php [closed]

I have following array of class names that i fetched from my css file

though element exist in array it prints «Element not exist». plz help

7 Answers 7

use in_array function

php array find element. Смотреть фото php array find element. Смотреть картинку php array find element. Картинка про php array find element. Фото php array find element

What array_search do is searches the array for a given value and returns the corresponding key if successful

so that means it not returning true or false so use in_array() php function.

in_array — Checks if a value exists in an array

For searching and returning TRUE FASLE

and call it as search_array($array,’#sa_nav’);

array_search() search for a value and returns the corresponding key if it matches.

#sa_nav key value is 0

No if you try with this code chunk, it is going to be evaluates as true

to make your code piece working you can try with in_array() method as suggested in most other answers.

The manual is always the first place to look:

Returns the key for needle if it is found in the array, FALSE otherwise.

Warning

This function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE. Please read the section on Booleans for more information. Use the === operator for testing the return value of this function.

You can use the Php inbuilt function

Or You can also use

php array find element. Смотреть фото php array find element. Смотреть картинку php array find element. Картинка про php array find element. Фото php array find element

First of all, when you phrase a question like this, considering using var_dump() to show what your array comprises.

Secondly, a simple change in your condition should do it:

Источник

in_array

(PHP 4, PHP 5, PHP 7, PHP 8)

in_array — Проверяет, присутствует ли в массиве значение

Описание

Список параметров

Возвращаемые значения

Примеры

Пример #1 Пример использования in_array()

Второго совпадения не будет, потому что in_array() регистрозависима, таким образом, программа выведет:

Пример #2 Пример использования in_array() с параметром strict

Результат выполнения данного примера:

Пример #3 Пример использования in_array() с массивом в качестве параметра needle

Результат выполнения данного примера:

Смотрите также

User Contributed Notes 38 notes

Loose checking returns some crazy, counter-intuitive results when used with certain arrays. It is completely correct behaviour, due to PHP’s leniency on variable types, but in «real-life» is almost useless.

The solution is to use the strict checking option.

// First three make sense, last four do not

If you’re working with very large 2 dimensional arrays (eg 20,000+ elements) it’s much faster to do this.

Remember to only flip it once at the beginning of your code though!

# foo it is found in the array or one of its sub array.

For a case-insensitive in_array(), you can use array_map() to avoid a foreach statement, e.g.:

Determine whether an object field matches needle.

= array( new stdClass (), new stdClass () );
$arr [ 0 ]-> colour = ‘red’ ;
$arr [ 1 ]-> colour = ‘green’ ;
$arr [ 1 ]-> state = ‘enabled’ ;

in_array() may also return NULL if the second argument is NULL and strict types are off.

If the strict mode is on, then this code would end up with the TypeError

In a high-voted example, an array is given that contains, amongst other things, true, false and null, against which various variables are tested using in_array and loose checking.

If you have an array like:
$arr = array(0,1,2,3,4,5);

Add an extra if() to adrian foeder’s comment to make it work properly:

If you found yourself in need of a multidimensional array in_array like function you can use the one below. Works in a fair amount of time

This code will search for a value in a multidimensional array with strings or numbers on keys.

I just struggled for a while with this, although it may be obvious to others.

If you have an array with mixed type content such as:

?>

be sure to use the strict checking when searching for a string in the array, or it will match on the 0 int in that array and give a true for all values of needle that are strings strings.

I found out that in_array will *not* find an associative array within a haystack of associative arrays in strict mode if the keys were not generated in the *same order*:

?>

I had wrongly assumed the order of the items in an associative array were irrelevant, regardless of whether ‘strict’ is TRUE or FALSE: The order is irrelevant *only* if not in strict mode.

I would like to add something to beingmrkenny at gmail dot com comparison post. After debugging a system, i discovered a security issue in our system and his post helped me find the problem.

In my additional testing i found out that not matter what you search for in an array, except for 0 and null, you get true as the result if the array contains true as the value.

Examples as php code :

Such the best practice in our case is to use strict mode. Which was not so obvious.

Kelvin’s case-insensitive in_arrayi is fine if you desire loose typing, but mapping strtolower onto the array will (attempt to) cast all array members to string. If you have an array of mixed types, and you wish to preserve the typing, the following will work:

// Note
// You can’t use wildcards and it does not check variable type
?>

A first idea for a function that checks if a text is in a specific column of an array.
It does not use in_array function because it doesn’t check via columns.
Its a test, could be much better. Do not use it without test.

Beware when using this function to validate user input:

$a = array(‘0’ => ‘Opt 1’, ‘1’ => ‘Opt 2’, ‘2’ => ‘Opt 3’);
$v = ‘sql injection’;
var_dump(in_array($v, array_keys($a)));

This will result : true;

If you need to find if a value in an array is in another array you can use the function:

The top voted notes talked about creating strict comparison function, because in_array is insufficient, because it has very lenient type checking (which is PHP default behaviour).

The thing is, in_array is already sufficient. Because as a good programmer, you should never have an array which contains ; all in one array anyway.

It’s better to fix how you store data and retrieve data from user, rather than fixing in_array() which is not broken.

If you’re creating an array yourself and then using in_array to search it, consider setting the keys of the array and using isset instead since it’s much faster.

Recursive in array using SPL

If array contain at least one true value, in_array() will return true every times if it is not false or null

Be careful to use the strict parameter with truth comparisons of specific strings like «false»:

?>

The above example prints:

False is truthy.
False is not truthy.

This function is for search a needle in a multidimensional haystack:

When using numbers as needle, it gets tricky:

Note this behaviour (3rd statement):

in_array(0, array(42)) = FALSE
in_array(0, array(’42’)) = FALSE
in_array(0, array(‘Foo’)) = TRUE
in_array(‘0’, array(‘Foo’)) = FALSE

Watch out for this:

Yes, it seems that is_array thinks that a random string and 0 are the same thing.
Excuse me, that’s not loose checking, that’s drunken logic.
Or maybe I found a bug?

hope this function may be useful to you, it checks an array recursively (if an array has sub-array-levels) and also the keys, if wanted:

If you have a multidimensional array filled only with Boolean values like me, you need to use ‘strict’, otherwise in_array() will return an unexpected result.

Hope this helps somebody, cause it took me some time to figure this out.

If you search for numbers, in_array will convert any strings in your array to numbers, dropping any letters/characters, forcing a numbers-to-numbers comparison. So if you search for 1234, it will say that ‘1234abcd’ is a match. Example:

Esta función falla con las letras acentuadas y con las eñes. Por tanto, no sirve para los caracteres UTF-8.
El siguiente código falla para na cadena = «María Mañas», no reconoce ni la «í» ni la «ñ»:

// ¿La cadena está vacía?
if (empty ($cadena))
<
$correcto = false;
>
else
<
$nombreOapellido = mb_strtoupper ($cadena, «utf-8»);
$longitudCadena = mb_strlen ($cadena, «utf-8»);

Esta función falla con las letras acentuadas y con las eñes. Por tanto, no sirve para los caracteres UTF-8.
El siguiente código falla para na cadena = «María Mañas», no reconoce ni la «í» ni la «ñ»:

// ¿La cadena está vacía?
if (empty ($cadena))
<
$correcto = false;
>
else
<
$nombreOapellido = mb_strtoupper ($cadena, «utf-8»);
$longitudCadena = mb_strlen ($cadena, «utf-8»);

I needed a version of in_array() that supports wildcards in the haystack. Here it is:

$haystack = array( ‘*krapplack.de’ );
$needle = ‘www.krapplack.de’ ;

var_dump(in_array(‘invalid’, array(0,10,20)));
The above code gives true since the ‘invalid’ is getting converted to 0 and checked against the array(0,10,20)

but var_dump(in_array(‘invalid’, array(10,20))); gives ‘false’ since 0 not there in the array

A function to check an array of values within another array.

Second element ‘123’ of needles was found as first element of haystack, so it return TRUE.

If third parameter is not set to Strict then, the needle is found in haystack eventhought the values are not same. the limit behind the decimal seems to be 6 after which, the haystack and needle match no matter what is behind the 6th.

In PHP array function the in_array() function mainly used to check the item are available or not in array.

1. Non-strict validation
2. Strict validation

1. Non-strict validation:
This method to validate array with some negotiation. And it allow two parameters.

Note: the Example 1, we use only two parameter. Because we can’t mention `false` value. Because In default the in_array() take `false` as a boolean value.

In above example,
Example 1 : The `key1` is not value in the array. This is key of the array. So this scenario the in_array accept the search key as a value of the array.
Example 2: The value `577` is not in the value and key of the array. It is some similar to the value `579`. So this is also accepted.

So this reason this type is called non-strict function.

2. Strict validation
This method to validate array without any negotiation. And it have three parameters. If you only mention two parameter the `in_array()` function take as a non-strict validation.

This is return `true` only the search string is match exactly with the array value with case sensitivity.

Источник

array_search

(PHP 4 >= 4.0.5, PHP 5, PHP 7, PHP 8)

array_search — Осуществляет поиск данного значения в массиве и возвращает ключ первого найденного элемента в случае успешного выполнения

Описание

Список параметров

Если needle является строкой, сравнение происходит с учётом регистра.

Возвращаемые значения

Примеры

Пример #1 Пример использования array_search()

Смотрите также

User Contributed Notes 44 notes

in (PHP 5 >= 5.5.0) you don’t have to write your own function to search through a multi dimensional array

$userdb=Array
(
(0) => Array
(
(uid) => ‘100’,
(name) => ‘Sandra Shush’,
(url) => ‘urlof100’
),

(1) => Array
(
(uid) => ‘5465’,
(name) => ‘Stefanie Mcmohn’,
(pic_square) => ‘urlof100’
),

(2) => Array
(
(uid) => ‘40489’,
(name) => ‘Michael’,
(pic_square) => ‘urlof40489’
)
);

simply u can use this

$key = array_search(40489, array_column($userdb, ‘uid’));

About searcing in multi-dimentional arrays; two notes on «xfoxawy at gmail dot com»;

It perfectly searches through multi-dimentional arrays combined with array_column() (min php 5.5.0) but it may not return the values you’d expect.

Secondly, if your array is big, I would recommend you to first assign a new variable so that it wouldn’t call array_column() for each element it searches. For a better performance, you could do;

It’s what the document stated «may also return a non-Boolean value which evaluates to FALSE.»

the recursive function by tony have a small bug. it failes when a key is 0

here is the corrected version of this helpful function:

If you are using the result of array_search in a condition statement, make sure you use the === operator instead of == to test whether or not it found a match. Otherwise, searching through an array with numeric indicies will result in index 0 always getting evaluated as false/null. This nuance cost me a lot of time and sanity, so I hope this helps someone. In case you don’t know what I’m talking about, here’s an example:

hallo every body This function matches two arrays like
search an array like another or not array_match which can match

for searching case insensitive better this:

About searcing in multi-dimentional arrays;
note on «xfoxawy at gmail dot com» and turabgarip at gmail dot com;

$xx = array_column($array, ‘NAME’, ‘ID’);
will produce an array like :
$xx = [
[ID_val] => NAME_val
[ID_val] => NAME_val
]

$yy = array_search(‘tesxt’, array_column($array, ‘NAME’, ‘ID’));
will output expected ID;

To expand on previous comments, here are some examples of
where using array_search within an IF statement can go
wrong when you want to use the array key thats returned.

Take the following two arrays you wish to search:

I was going to complain bitterly about array_search() using zero-based indexes, but then I realized I should be using in_array() instead.

The essence is this: if you really want to know the location of an element in an array, then use array_search, else if you only want to know whether that element exists, then use in_array()

Be careful when search for indexes from array_keys() if you have a mixed associative array it will return both strings and integers resulting in comparison errors

/* The above prints this, as you can see we have mixed keys
array(3) <
[0]=>
int(0)
[1]=>
string(3) «car»
[2]=>
int(1)
>
*/

hey i have a easy multidimensional array search function

Despite PHP’s amazing assortment of array functions and juggling maneuvers, I found myself needing a way to get the FULL array key mapping to a specific value. This function does that, and returns an array of the appropriate keys to get to said (first) value occurrence.

But again, with the above solution, PHP again falls short on how to dynamically access a specific element’s value within the nested array. For that, I wrote a 2nd function to pull the value that was mapped above.

I needed a way to return the value of a single specific key, thus:

Better solution of multidimensional searching.

FYI, remember that strict mode is something that might save you hours.

one thing to be very aware of is that array_search() will fail if the needle is a string and the array itself contains values that are mixture of numbers and strings. (or even a string that looks like a number)

The problem is that unless you specify «strict» the match is done using == and in that case any string will match a numeric value of zero which is not what you want.

also, php can lookup an index pretty darn fast. for many scenarios, it is practical to maintain multiple arrays, one in which the index of the array is the search key and the normal array that contains the data.

//very fast lookup, this beats any other kind of search

I had an array of arrays and needed to find the key of an element by comparing actual reference.
Beware that even with strict equality (===) php will equate arrays via their elements recursively, not by a simple internal pointer check as with class objects. The === can be slow for massive arrays and also crash if they contain circular references.

This function performs reference sniffing in order to return the key for an element that is exactly a reference of needle.

A simple recursive array_search function :

A variation of previous searches that returns an array of keys that match the given value:

I needed a function, that returns a value by specifying a keymap to the searched value in a multidimensional array and came up with this.

My function get_key_in_array() needed some improvement:

An implementation of a search function that uses a callback, to allow searching for objects of arbitrary complexity:

For instance, if you have an array of objects with an id property, you could search for the object with a specific id like this:

For a more complex example, this function takes an array of key/value pairs and returns the key for the first item in the array that has all those properties with the same values.

The final step is a function that returns the item, rather than its key, or null if no match found:

Источник

PHP multidimensional array search by value

I have an array where I want to search the uid and get the key of the array.

Examples

Assume we have the following 2-dimensional array:

I tried making loops, but I want a faster executing code.

22 Answers 22

This will work. You should call it like this:

Based on angoru answer. In later versions of PHP ( >= 5.5.0 ) you can use one-liner.

php array find element. Смотреть фото php array find element. Смотреть картинку php array find element. Картинка про php array find element. Фото php array find element

If you are using (PHP 5 >= 5.5.0) you don’t have to write your own function to do this, just write this line and it’s done.

If you want just one result:

For multiple results

In case you have an associative array as pointed in the comments you could make it with:

If you are using PHP

In later versions of PHP (>= 5.5.0) you can use this one-liner:

php array find element. Смотреть фото php array find element. Смотреть картинку php array find element. Картинка про php array find element. Фото php array find element

Building off Jakub’s excellent answer, here is a more generalized search that will allow the key to specified (not just for uid):

I know this was already answered, but I used this and extended it a little more in my code so that you didn’t have search by only the uid. I just want to share it for anyone else who may need that functionality.

Here’s my example and please bare in mind this is my first answer. I took out the param array because I only needed to search one specific array, but you could easily add it in. I wanted to essentially search by more than just the uid.

Also, in my situation there may be multiple keys to return as a result of searching by other fields that may not be unique.

Later, I ended up writing this to allow me to search for another value and associative key. So my first example allows you to search for a value in any specific associative key, and return all the matches.

This second example shows you where a value (‘Taylor’) is found in a certain associative key (first_name) AND another value (true) is found in another associative key (employed), and returns all matches (Keys where people with first name ‘Taylor’ AND are employed).

Источник

How to find a value in an array and remove it by using PHP array functions?

How to find if a value exists in an array and then remove it? After removing I need the sequential index order.

Are there any PHP built-in array functions for doing this?

php array find element. Смотреть фото php array find element. Смотреть картинку php array find element. Картинка про php array find element. Фото php array find element

12 Answers 12

To search an element in an array, you can use array_search function and to remove an element from an array you can use unset function. Ex:

You can refer: https://www.php.net/manual/en/ref.array.php for more array related functions.

php array find element. Смотреть фото php array find element. Смотреть картинку php array find element. Картинка про php array find element. Фото php array find element

You need to find the key of the array first, this can be done using array_search()

php array find element. Смотреть фото php array find element. Смотреть картинку php array find element. Картинка про php array find element. Фото php array find element

php array find element. Смотреть фото php array find element. Смотреть картинку php array find element. Картинка про php array find element. Фото php array find element

Just in case you want to use any of mentioned codes, be aware that array_search returns FALSE when the «needle» is not found in «haystack» and therefore these samples would unset the first (zero-indexed) item. Use this instead:

The above example will output:

You can use array_filter to filter out elements of an array based on a callback function. The callback function takes each element of the array as an argument and you simply return false if that element should be removed. This also has the benefit of removing duplicate values since it scans the entire array.

You can use it like this:

And if you want to re-index the array, you can pass the result to array_values like this:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *