Fairly often in Drupal I get handed arrays that have significant keys, but the values are either a label or false-y. I generally don't care about the items with empty values, or I specifically want to remove them. The solution is to use array_filter($arr) to remove any array items with false-y values. In fact, sometimes I don't even care about the labels at all, in which case I might do array_keys(array_filter($arr)). Examples below.
- $arr = array(
- 'key1' => 'Label 1',
- 'key2' => 'Second Label',
- 'key3' => 0,
- 'key4' => 'Label No. 4',
- 'key5' => 0,
- );
- $arr_filtered = array_filter($arr);
- /*
- $arr_filtered = array(
- 'key1' => 'Label 1',
- 'key2' => 'Second Label',
- 'key4' => 'Label No. 4',
- );
- */
- $arr_filtered_keys = array_keys(array_filter($arr));
- /*
- $arr_filtered_keys = array(
- 'key1',
- 'key2',
- 'key4',
- );
- */
array_filter() can also take a callback as the second argument, which lets you filter out items on your own terms. See the array_filter() documentation.