Дубликат isset PHP () в C/C++

Вы можете создать массив с суффиксом имени и проходить по нему, проверяя каждый файл отдельно.

foreach(['one', 'two', 'three'] as $item)
    $name  = 

Вы можете создать массив с суффиксом имени и проходить по нему, проверяя каждый файл отдельно.

[110]FILES["uploaded_{$item}"]["name"]; $tmp =

Вы можете создать массив с суффиксом имени и проходить по нему, проверяя каждый файл отдельно.

[110]FILES["uploaded_{$item}"]["tmp_name"]; $type =

Вы можете создать массив с суффиксом имени и проходить по нему, проверяя каждый файл отдельно.

[110]FILES["uploaded_{$item}"]["type"]; $size =

Вы можете создать массив с суффиксом имени и проходить по нему, проверяя каждый файл отдельно.

[110]FILES["uploaded_{$item}"]["size"]; if (!preg_match("/.(jpeg|jpg|png)$/i", $name)) $folder = "upload/"; $result = move_uploaded_file($tmp, "$folder/$name"); }
6
задан VarunGupta 23 October 2008 в 17:42
поделиться

8 ответов

Я - парень C++, но я помню в PHP isset, используется, чтобы проверить, содержит ли переменная значение при передаче в через получить/отправить запрос (я уверен, что существует другое использование, но это - общее, которому я верю).

У Вас действительно нет динамического контроля типов в C++. Таким образом, Вы не можете внезапно использовать имя переменной, которое Вы ранее явно не определили. Действительно нет такой вещи как переменная "сброса" в C++.

Даже если Вы говорите "международный var"; и не инициализируйте его, переменная имеет значение, обычно мусор, но это все еще "установлено" в смысле PHP.

Завершения, которые я предполагаю, были бы #ifdef препроцессора и #ifndef, который только проверяет, чтобы видеть, определили ли Вы переменную с помощью #define. Но по моему опыту это главным образом используется для исключения или добавления кода на основе флагов. Например:

// code code code
#ifdef DEBUG
// debug only code that will not be included in final product.
#endif
// more code more code

Можно определить ОТЛАДКУ с помощью #define, чтобы определить, включать ли код "ОТЛАДКИ" теперь.

Возможно, сообщение немного больше о том, что Вы пытаетесь сделать с C++, эквивалентным из isset, даст Вам лучшее представление о том, как пойти о выполнении его "C++ Путь".

12
ответ дан 8 December 2019 в 05:59
поделиться

Нет никакого прямого средства выполнения этого на языке. Однако возможно сделать этот вид вещи при помощи карты, такой как следующее:

typedef std::map<std::string, int> variables_type;
variables_type variables;

variables["var"] = 1;
if(variables.find("jon") == variables.end())
   std::cout << "variable, \"jon\" not set\n";

Для создания этого переменной как используемые в PHP или JavaScript, реализация должна была бы использовать своего рода различный тип.

5
ответ дан 8 December 2019 в 05:59
поделиться

Не совсем. Вы не можете динамично создать переменные (хотя можно динамично создать устройство хранения данных с malloc () и др., или новый и др. в C++) в C. Я предполагаю, что динамично загруженные библиотеки размывают изображение, но даже там, способ, которым Вы устанавливаете, существует ли переменная, путем поиска ее имени. Если имя не там, то, за исключением выполнения компилятора для создания динамично загруженного модуля и затем загрузки его Вы, вероятно, застреваете. Понятие действительно не относится к C или C++.

3
ответ дан 8 December 2019 в 05:59
поделиться

Как сказано в других ответах, в переменных C++ никогда не не определены. Однако переменные могут быть неинициализированными, в этом случае их содержание не указано в стандарте языка (и реализовано большинством компиляторов, чтобы быть что бы ни случилось, чтобы быть сохраненным в той ячейке памяти).

Обычно компилятор предлагает флаг для обнаружения возможно неинициализированных переменных и генерирует предупреждение, если это включено.

Другое использование isset могло быть должно иметь дело с другим кодом. Помните, что C++ является статически скомпилированным языком, и пытающийся переопределить символ приведет к ошибке времени компиляции, устраняя необходимость isset.

Наконец, то, что Вы могли бы искать, является нулевым указателем. Для этого просто используйте простое сравнение:

int * x(getFoo());
if (x) {
  cout << "Foo has a result." << endl;
} else {
  cout << "Foo returns null." << endl;
}
1
ответ дан 8 December 2019 в 05:59
поделиться

Короткий ответ: НЕТ

Стандартный последующий вопрос: Какую проблему Вы действительно пытаетесь решить?

0
ответ дан 8 December 2019 в 05:59
поделиться

Хорошо всегда существует Повышение. Дополнительный

http://www.boost.org/doc/libs/1_36_0/libs/optional/doc/html/index.html

который должен почти сделать то, что Вы хотите.

1
ответ дан 8 December 2019 в 05:59
поделиться

Необходимо разделить две вещи здесь: объявление переменной и переменное содержание.

Как сказано в других ответах, в отличие от PHP, C++ не позволяет переменной использоваться, прежде чем это будет объявлено.

Но кроме этого, это может быть неинициализированным.

Я думаю, что PHP isset функция пытается узнать, имеет ли переменная применимое значение. В C++ это соответствует лучше всего указателю, являющемуся ПУСТЫМ или допустимым.

0
ответ дан 8 December 2019 в 05:59
поделиться

Самая близкая вещь, о которой я могу думать, состоит в том, чтобы использовать указатели, а не реальные переменные. Затем можно проверить fro ПУСТОЙ УКАЗАТЕЛЬ.

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

0
ответ дан 8 December 2019 в 05:59
поделиться