Как использовать эту функцию с несколькими частями php-программы

#php

Вопрос:

Я новичок в написании функций, которые разделяются между различными частями программы. У меня есть этот тип функции ниже, который отлично работает в одиночку, но я хочу, чтобы он работал с разными наборами данных, чтобы мне не нужно было копировать/дублировать всю функцию. Способ работы функции заключается в том, что она захватывает сохраненные данные, которые находятся в базе данных, затем преобразует их в правильную равную часть, а затем легко отображает с помощью чего-то вроде эха. Две первые строки в функции не могут быть в функции, если она будет работать с несколькими частями, но я не знаю, как это сделать. И если вы используете global или перемещаете части $ за пределы функции, функция явно не функционирует. Так что я застрял. Если возникнут какие-либо вопросы, дайте мне знать.

 function something() { $data_in_database_one = get_option( 'config' ); $something = $data_in_database_one['data_in_database_one']; if ( ( $something ) == '0' ) : echo 'zero'; elseif ( ( $something ) == '1' ) : echo 'one'; elseif ( ( $something ) == '2' ) : echo 'two'; elseif ( ( $something ) == '3' ) : echo 'three'; elseif ( ( $something ) == '4' ) : echo 'four'; elseif ( ( $something ) == '5' ) : echo 'five'; else :  echo ''; endif; }  

Эта часть не должна быть в функции:

 $data_in_database_one = get_option( 'config' ); $something = $data_in_database_one['data_in_database_one'];  

Потому что, например, будет несколько разделов данных:

 $data_in_database_two = get_option( 'config' ); $something = $data_in_database_two['data_in_database_two'];  

и:

 $data_in_database_three = get_option( 'config' ); $something = $data_in_database_three['data_in_database_three'];  

и:

 $data_in_database_four = get_option( 'config' ); $something = $data_in_database_four['data_in_database_four'];  

и:

 $data_in_database_five = get_option( 'config' ); $something = $data_in_database_five['data_in_database_five'];  

Как вы видите в примерах, все имена меняются во всех частях, имя меняется в 3 названиях в 2 выстроенных примерах, которые я показываю выше.

Итак: я подумал написать несколько операторов «если», которые делают что-то вроде (не настоящий код, написанный только для того, чтобы вы меня поняли):

 if $this is called then use these lines $data_in_database_one = get_option( 'config' ); $something = $data_in_database_one['data_in_database_one']; elseif $this_two is called then use these lines $data_in_database_two = get_option( 'config' ); $something = $data_in_database_two['data_in_database_two'];   

Но я не знаю, как это написать. И я не знаю, как связать все это с исходной функцией что-то(). ???

Комментарии:

1. Использовать параметры функции?

Ответ №1:

Если $data_in_database_one = get_option( 'config' ); всегда одно и то же, и если это просто ключ data_in_database_one к тому, кто меняется… Может быть, вы можете попробовать что-то подобное ?

 function something(string $data_key) {  $config = get_option( 'config' );  switch ($config[$data_key]) {  case '0':  echo 'zero';  break;  case '1':  echo 'one';  break;  case '2':  echo 'two';  break;  case '3':  echo 'three';  break;  case '4':  echo 'four';  break;  case '5':  echo 'five';  break;  default:  echo '';  break;  } }  

Вы можете видеть, что я использую случай переключения, а не многие «если»

И после того, как в вашей программе вы сможете сделать что-то подобное :

 something('data_in_database_one'); //Will echo 'one' something('data_in_database_two'); //Will echo 'two'  

На вашем примере это может быть:

 if ($this) {  something('data_in_database_one'); } else if ($this_two) {  something('data_in_database_two'); }  

Я не знаю, было ли это тем, что ты видишь ?

Отредактируйте, если я понимаю проблему и если эхо не было нужно :

 function something(string $data_key) {  $config = get_option('config');  return $config[$data_key]; }  //Now you can use : $data_in_use_one = something('data_in_database_one'); $data_in_use_two = something('data_in_database_two');   

Комментарии:

1. Как $data_in_database_one, так и ключевые изменения data_in_database_one. Так что это самая трудная часть. Но вы, возможно, нащупали что-то со строкой $data_key внутри (). Я новичок во всем этом, поэтому пытаюсь понять это. Я попробую ваши идеи.

2. В вашем примере все еще кажется, что $data_key должен быть другим типом кода, потому что имена действительно меняются и не могут быть определены в функции. Я не знаю. Может быть, есть другой способ. Имена могут иметь частичное имя, такое же, как окончание 2 символов или что-то в этом роде.

3. В эту секунду я читаю что-то о: foreach($GLOBALS … может быть, что-то из этого сработает…

4. Я не уверен, что понимаю, что вы хотите сделать. Если вы просто хотите, чтобы что-то вернуло базу данных для использования, см. Мою правку в этом посте

5. Итак, я решил эту идею, используя вашу идею string $variable, но я использовал другой метод, просто поместив свой исходный код функции в отдельный файл с require_once в этот файл. Затем я вызываю функцию с эхом и 2 необходимыми переменными строками, и это отлично работает. Может быть, не самый лучший?