Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 718453
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 14, 20262026-05-14T05:31:42+00:00 2026-05-14T05:31:42+00:00

It often happens to me to handle data that can be either an array

  • 0

It often happens to me to handle data that can be either an array or a null variable and to feed some foreach with these data.

$values = get_values();

foreach ($values as $value){
  ...
}

When you feed a foreach with data that are not an array, you get a warning:

Warning: Invalid argument supplied for foreach() in […]

Assuming it’s not possible to refactor the get_values() function to always return an array (backward compatibility, not available source code, whatever other reason), I’m wondering which is the cleanest and most efficient way to avoid these warnings:

  • Casting $values to array
  • Initializing $values to array
  • Wrapping the foreach with an if
  • Other (please suggest)
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-14T05:31:43+00:00Added an answer on May 14, 2026 at 5:31 am

    There are three reasons that may cause this error:

    1. A bug in the program. For example, get_values() is expected to return an array, but it returns something else. In this case you must start debugging the code, find the reason why get_values() doesn’t return an array, and fix it.

    2. get_values() may return an array or indicate that there is no data at all, by returning null (or false). In this case, you must add a condition which explicitly checks for this value, i.e.

       if ($values !== null)
       {
           foreach ($values as $value)
           {
               ...
           }
       }
      

      Here, PHP will be able to help you, by raising an alarm, when unexpected data type (i.e. neither null or array) would be provided (which means the bug in the code and you have to debug it again).

    3. The code is just carelessly written and may return anything, so all you want is to get rid of this warning. But the most important part about warnings is that a programmer should never "avoid" (in the meaning or "silence") them.
      Warnings are programmer’s friends, so don’t waste their power. Properly organize your code the way it would only return expected data types. This way you will never get false alarms that have to be silenced. And at the same time PHP will be able to help you when unexpected data type would be provided (meaning that some code or input is not okay).
      When you have no control on the input data it would be a good idea to validate it before processing. In case an array is obligatory, then return an error and stop processing. In case an array is optional, initialize it as empty array. And so you won’t see this error again.
      Only if don’t care whether your input is boolean, or string or actually iterable you may use the approach below, which purpose is just to sweep the dirt under the rug:

       if (is_array($values) || is_object($values))
       {
           foreach ($values as $value)
           {
               ...
           }
       }
      
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 410k
  • Answers 410k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer You can define aliases in a derived table and then… May 15, 2026 at 7:33 am
  • Editorial Team
    Editorial Team added an answer In UML, you should use an aggregation symbol (the diamond:… May 15, 2026 at 7:33 am
  • Editorial Team
    Editorial Team added an answer If you use BooleanQuery.SetMaxClauseCount(int) make sure it is at least… May 15, 2026 at 7:33 am

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.